究竟開發人員需要掌握多少門語言?

諸如Apple、Facebook及Google這種大公司正在開發他們本身的編程語言。開發人員們被迫僅僅有適應。html

前不久的世界開發人員大會上。Apple發佈了它的新開發語言Swift。這是近期大型技術公司們開發的一大波新語言中的最新成員。這些新語言某種程度上都是專門應用於他們本身的平臺。linux

對iOS開發人員,Apple有Swift。而Facebook 有 Hack —— 一門用於後端開發的語言。與此同一時候。Google已經擁有了它本身的Javascript替代者 Dart,以及一門新的通用編程語言Go。git

這一波又一波的新語言。給開發人員們帶來了不少問題。github

或許當中最嚴重的問題正如我一位同事Adriana Lee在Apple公佈Swift後所說:編程

(開發人員們究竟還得學習多少門語言?) ——Adriana Lee (@adra_la) June 2, 2014swift

計算機語言的通天塔

眼下已經存在的編程語言有數百種,同一時候還有不少其它的語言正在涌現。當中不少都是被設計用在相對較窄的應用程序範圍內,大多數甚至從未走出過項目小組的範圍。後端

與此相似,大技術公司開發的新語言事實上也是伴隨着公司一塊兒成長的。通用語言的鼻祖。C語言,就源於上世紀70年代初的AT&T貝爾實驗室。Java,眼下做爲Android app開發的主要語言,誕生於上世紀90年代Sun公司的Microsystems系統架構

發展到現在,不一樣之處在於。公司們擁抱新語言、從而想要延伸的特定商業目標的範圍不同了 —— 這一過程同一時候創建了一個忠心耿耿的開發人員基礎,他們被緊緊鎖定在了某個公司的特定平臺上。這類一石二鳥的戰略。最先可以追溯到Sun對Java的採用。當時公司就將其做爲了挑戰微軟PC桌面統治地位的一種手段。(事情儘管沒有像Sun計劃的那樣發展下去,但在Google轉向Android以前。Java大致上也算是在企業中間件系統中找到了本身的一席之地。)app

這麼看來,Apple的Swift其目標也就很是明白了。框架

Swift應該不會辜負公司前期的大肆宣傳,經過磨平Objective-C那粗糙的毛邊,看起來它能夠成功簡化iOS app開發人員的開發過程。但是相同仍是這些開發人員,他們卻需要學習一門新語言的輸入和輸出。而這些功能很是可能在其它地方都不會用到。

大公司們爲何要反覆造輪子

「不要反覆造輪子」這一哲學在絕大多數開發人員心中根深蒂固,大公司們對此卻並不買帳。

那他們爲什麼不只僅是改動下現有語言用於新的用途呢?

答案很是easy,公司們發明他們本身的語言,是因爲他們有這個能力。設計一門新語言可能很是複雜,但對資源要求卻並不很是高。

困難之處也就在對其提供支持,包含提供軟件資源(共享代碼庫、API、編譯器、文檔等)以及贏得開發人員的支持。

大公司們在這雙方面尤爲擅長。

另外一個事實,現有語言一般很是難硬塞進如今的複雜代碼框架中。舉個栗子。Facebook決定發明的Hack,就是一個廣泛適用於Web開發的腳本語言PHP的超集合(superset)。

Facebook的Hack近期已經比較廣泛,其主要目標就是改進代碼的穩定性,針對這一目的,它強制在程序執行以前對數據類型進行檢測。

這種檢測確保了一個程序。例如說,不會將一個整數解析爲一個字符串。這種錯誤假設捕獲不到很是可能會致使不可預知的後果。在Hack中。這些檢測會預先執行。以便程序猿能夠在程序上線前早早發現這種錯誤。

據Facebook的Hack項目組核心成員Julien Verlaguet透露,公司以前嘗試過用一門現有語言實現更高效的編程。但是Facebook的大部分代碼都是由PHP編寫的,公司實際上已經創建了一個支持PHP及其分支的軟件架構。即便可讓PHP同其它語言編寫的代碼協同工做。實現的難易程度和執行速度都沒法知足要求。

「比方說咱們嘗試用Scala重寫PHP代碼庫,」Verlaguet說。「Scala是一門設計優秀的美麗語言,但是它與PHP全然不兼容。每次我需要從Scala的代碼庫部分調用PHP的時候。都會損失性能。咱們很是願意使用一門現有語言。但是對於咱們來講,這條路行不通。」

因而,Facebook發明了Hack,它與PHP同樣能夠共用公司現有的架構。Verlaguet介紹說,Facebook的代碼庫主體已經從PHP遷移到了Hack。同一時候公司將Hack開源。但願獨立開發人員們能夠幫公司找到Facebook之外的用途。

「你仍然可以使用PHP,」他說。「但是咱們但願你有使用Hack的慾望。」

誰說了算

公司和開發人員之間有一種微妙的平衡。公司可以依照本身的喜愛發明語言。

但是假設開發人員都不肯使用這門語言。那就沒人用了,公司之外的人也就沒人願意將本身的職業生涯委託給這家公司。

公司在開發過程當中同一時候使用不一樣的語言。這並很多見。好比,你可能用Objective-C開發iOS app。但卻用Java開發Android app。對開發人員來講,這歷來都不是癥結所在。因爲Objective-C和Java都是通用面嚮對象語言。它們用途普遍適用於很是多場合。

然而,Hack、Dart、Go和Swift,到眼下爲止,仍然僅僅適用於嚴格特定公司的編程解決方式,每每和公司選擇的編程環境相相應。誠然,現在下結論可能還太早。例如說Hack,就可以用在一些後端的實現中。它僅僅是太新了。以致於Facebook尚未不論什麼數據供人們如此使用。

不是開發人員不能學習多門語言。

其實。大多數人已經掌握了多門語言。這比如羅曼斯語(一種由拉丁語演變而成的語言),假設你會說西班牙語。再去學法語就比那些不會西班牙語的人簡單不少。

與此相似,假設你已經會Java,再學Ruby或Perl就簡單得多。

假設你會PHP,基本上就已經學會了Hack。

與此相反,學習多門語言不少其它的是一個習慣問題。假設Java已經攻克了你的問題,你就再也不有動力去學Ruby。

假設你用Objective-C編寫iOS app感受很是爽。你就不會有強烈的意願去學Swift。

另外,對於一些開發人員來講,封閉生態系統的語言僅僅會使每個人的生活變得更糟。

好比。自由設計師Jack Watson-Hamblin就告訴我說。像Apple這樣強勢推出Swift,事實上是在冒險添加程序猿的負擔,同一時候將開發人員社區割裂開來:

程序猿掌握多門語言當然重要,但是不斷強迫他們緊跟新語言,倒是行不通的。假設我正在開發一個簡單的跨平臺app,我可不想被迫掌握四門語言再來完畢它。假設真的需要。我也僅僅想使用一門語言。

Watson-Hamblin就主張說,當每家公司都爲了自家需要發明本身的語言時,程序猿的注意力被分散。開發的視野也侷限於一種,這僅僅會拖慢整個開發進程。

他說,「假設拿公司負責一門語言與負責一個開源社區相比較,這二者的差異就比如一家大企業與一個初創小公司的差異」。社區生來就更加靈活。適應能力更強。

固然,Apple有不少很是好的理由推出Swift從零開始,就像當初Facebook發明Hack的時候同樣。

我並不是說,大公司不會強迫開發人員接受這樣的改變。在這方面。有些公司一直都很是讓人討厭。

「新語言的發明。伴隨着霸權的支配。」Verlaguet說,「被迫不停追趕,確實使人沮喪。但還有一方面,你又多了一種解決這個問題的新語言。

反過來想一想,要是全世界的程序猿都用相同一門語言作所有事情,即便啥都湊合着能幹,這門語言也必定幹得不怎麼樣」。

題圖來自於Flickr user Ruiwen Chua。CC 2.0


via: http://readwrite.com/2014/06/17/apple-swift-facebook-hack-google-dart

譯者:Mr小眼兒 校對:wxy

本文由 LCTT 原創翻譯,Linux中國 榮譽推出

相關文章
相關標籤/搜索