想跨入程式設計領域的新人,幾乎都會想問這個問題:「哪種程式語言才有未來?」

走過比較多路的前輩們會說,語言不是重點,當然這是經驗談,不過對新人來說,這有點像是屁話,畢竟總還是要個起頭,別說新人了,正在這個領域的開發者,老實說也有不少人,無時不刻地思考著這個問題。

畢竟研究一門語言需要時間與心力,哪個人不希望自己的投入的成本能夠回收?誰不希望選擇的語言能發光發熱?

相中有未來的語言?

有沒有可能相中一門有未來的語言?有的!老實說,當初決定轉換跑道的我,在2000年左右就「運氣」不錯地相中了Java這個語言,雖不算是很早就投入Java,但當時正值網際網路興起、Java生態圈百花齊放、話題不斷的時間點,雖然網路泡沫重創當時Java的主子──Sun公司,但至少2000年到2005左右的這段時間,Java仍算是一段不錯的榮景,我就是在這段時間搭上了順風車,在Java這塊領域有了點名氣,即使後續Sun走下坡、Java發展停頓,然而,畢竟一門熱門的語言不會馬上失去舞台,後續仍是靠著Java繼續混口飯吃。

那麼,該怎麼相中一門有未來的語言?現在有不少程式語言趨勢的統計,分別從不同變因來排行各個程式語言,這似乎是個用來選擇語言的參考依據,最保守的方式,是選擇各排行榜中都佔有前幾名席位的語言,就算它後來運氣不好地走下坡了,至少仍會有一定的需求,如果要刺激一點,想選個高風險、高報酬的語言來投資,那就看看上升趨勢最猛的,接下來就「賭」它能一直持續突進了!

不過相對來說,依照排行榜選擇語言,仍是比較保守的作法,也會因此而錯失了那些目前不被青睞、靜待翻身的語言。例如古老的Ruby語言,由於電腦效能不斷提升,以及大家對Java生態圈中各種臃腫框架的厭惡,加上《Beyond Java》中大力推棒Ruby與Rails,造就了Ruby這門程式語言的榮景;幾乎是同時地,Google的Gmail等線上應用程式積極運用了JavaScript,令開發者重新看待這門史上被誤會最大的語言,使得JavaScript鹹魚翻身,其應用更進一步橫跨前後端,甚至嵌入式系統,後續生態圈出現百花齊放的盛況,比之當年Java,可說是有過之而無不及。

就算是盛極一時而後衰退的語言,也有重新復甦的可能呢!由於多核心運算的興起、大數據(Big data)的話題,使得平行運算日益受到重視,而適合平行運算的函數式典範逐漸受到青睞,後來決定重新加入Lambda的Java 8,目前看來已經得到不少開發者的肯定,甚至之前號稱可取代Java的Scala,現在也有了Java 8會減少其存在必要性的聲音出現,想到當初決定研究一下函數式,總還是覺得自己「運氣」真好!

程式語言的未來是指什麼?

只要你能回顧歷史,總能說出個前因後果,來解釋一門語言何以會興衰,這或許是許多想跨入程式設計領域的新人,會想從走過這段歷史的人身上詢問如何選擇的原因,然而問題在於,現在的你無法穿越至未來,以便回顧未來至現在這個時間點,不然,我也很想知道,接下來到底哪些語言會竄起,因為自己都沒辦法回答這個問題,面對選擇哪種程式語言才有未來這樣的問題,我也只能說,射飛標決定就是!

然而,如果你問我,為何當初相中Java這門語言,我就可以確切地告訴你原因,實際上,Java並不是我學習的第一門語言,在這之前,我摸過C、C++、VB、PHP等,後來會選擇潛心研究Java的原因有幾個,相關書籍文件多到讀不完,有集聚臺灣許多Java開發者的Javaworld@TW論壇可以交流,有開放原始碼的各式框架可以玩,我可以從這些要素中,盡情地擷取Java這門語言在程式開發上需要知道的資訊,不用擔心資訊匱乏的問題。

那麼,你說這門語言的未來呢?沒有想過嗎?說沒有是騙人的,現實面來說,我還是想過,現在選擇的Java將來能不能賺錢糊口,不過坦白說,這我比較不擔心,一個書籍文件如此多,討論人口如此多、開放原始碼如此多的語言,不可能沒有工作機會,唯一比較要擔心的,是自己的能力夠不夠格挑選工作的問題,至於後來能在這個語言上混出了些名聲,真的只能說是運氣,完全是在意料之外。

從方才的現實面考量來說,對於初入程式設計領域的新人,一門有未來的語言,或許其實是指可以有工作機會,甚至有高薪工作機會的語言,如果是這樣,那麼隨便一個語言排行榜前十名,或者是坊間補習班課程中的程式語言,都有這個機會,如果只是指這樣的未來,那麼選擇哪種語言,跟運氣基本上已經沒有關係,努力的成份,反而才是最重要的了!

從興趣中選語言!

只是既然要努力,也就不要選擇一個自己都討厭的東西啃個半死,因此,選個自己有興趣的語言就是了。

造就你對一門語言有興趣的因素可能有幾個,也許是因為它可以寫你有興趣的手機App、網頁前後端、嵌入式,也許是最新經常看到這門語言的相關新聞,也許是FB的朋友中,有些人成天在講這個語言,甚至是發現到某語言,經常會舉辦XXX Girls這類引起你好奇心的活動,找幾個IT新聞網站,有空上去瀏覽幾個感興趣的標題,就能培養一下初步的概念。

實際上,秉持著一名程式設計師,每年都要學一種新語言想法的我,在選擇下一門想研究的語言時,多半也有著這樣的過程,這並非寄望將來它會發光發熱,有時甚至只是想多培養一些想法而去學一門語言(此時,常會戲稱純學身體健康的),當然,這也是基於興趣的一種選擇。

如果真的找不出興趣,那麼就暫且選擇一門自己看得順眼,且可以跨越多個領域的語言,像是Java、JavaScript、Python等,基本上,在手機App、網頁前後端、嵌入式等多個領域,都已看到相關應用,因此,可以將重點先擺在是否能掌握語言。

這因人而不同,有人愛Java的嚴謹,有人愛Python的簡明,有人愛JavaScript的自由,網路上有許多這類語言的快速教學,像是「learn x in y minutes」這網站可做初步參考。

使用一門可跨越多個領域的語言,其實就是在給自己一個機會,探索程式開發中各個領域,並從中熟悉語言、設計邏輯、摸索生態圈,甚至是培養出特定領域的領域知識。

不管你選擇哪一門語言做為開始,這首次的探索一定是很慢的,你可能在這中間找到自己喜愛的領域,因而重新選擇另一門擅長該領域的語言也沒有關係,就像不少人就在快速開發這塊揚棄了Java而選擇了Rails/Ruby,若能如此,或許已約略知道未來的方向。

語言不重要,到底是?

每當出現程式語言未來、重要性的討論時,總會有「語言不重要」的相關說詞出現,多半伴隨著領域知識才重要的講法出現,這通常是當事人解決問題的能力已經夠強大,而語言只佔能力中一小部份,甚至是有能力從數種語言選出最適合者,來解決問題,從解決問題需要的能力比例上來看,這樣的結論是沒有錯。

不過,對跨入程式開發的新人來說,還是得選擇一門合適的語言,而能說出語言不重要這樣的話,則是將來要努力達到的目標,這樣選擇哪個語言都會有未來,否則,單純只希望選到一門有未來的語言,希望機會可以多到爆,即使自己能力不足,也能輕鬆獲取機會,那真的就只能純賭運氣了!

作者簡介


Advertisement

更多 iThome相關內容