5月4日外電頭條:我們?yōu)槭裁锤枰嘣某绦騿T?
原創(chuàng)【51CTO.com快譯】太多的程序員把自己限制在C++和Java中,而錯過了眾多的新選擇。
美國人自我感覺良好,他們只喜歡講本土語言,這已經(jīng)眾人皆知了。那么,美國程序員也差不多。如今的計算機科學研究生往往在離開學校時只精通一門編程語言——通常是一門主流系統(tǒng)語言,比如Java或C++——然后在整個職業(yè)生涯中幾乎完全離不開它。
從表面上看這是有道理的。C++和Java都是功能強大的復雜語言,它們兩個中任何一個的語法學習書籍都擺滿了學校的圖書館,更不要說這兩種語言的用途極為廣泛。正如51CTO.com此前發(fā)布的編程語言排行榜歷期榜單中,Java和C++總是***,如果你對任何一個不熟悉的話,將來找工作的時候就會不得不錯過無數(shù)的機會。
但是,如果整個軟件開發(fā)領(lǐng)域都幾乎完全基于兩種語言——況且實際上是兩種非常相似的語言——這也是十分危險的,容易導致停滯不前。薩皮爾-沃爾夫假說認為,人類的思維模式受到語言的深刻影響。語言學家們對他的假說到底有多大效果還存在爭執(zhí),但是對計算機程序語言這個人類真實語言的抽象版來說,假說似乎特別恰當。這些年來,雖然軟件開發(fā)的理念一直在前進著,比如功能性和面向方面編程,但是主流語言始終圍繞著幾十年前就出現(xiàn)的面向?qū)ο笏枷刖徛兓?/P>
然而在主流之外,我們經(jīng)常看到各式各樣的火花。每年都有新的編程語言出現(xiàn)——51CTO.com曾介紹過很多新興語言,如面向分布與并發(fā)的Erlang、具有動態(tài)性的函數(shù)對象混合型語言Scala、類似Java和C#的新語言Fan等——其中許多是非常有價值的,也有許多真實的項目因為采用了它們得到了良好的回報。是不是應(yīng)該也讓軟件開發(fā)者們離開一下Java和C++這兩間屋子,出去看看外面的世界?
CLI — 新語言的聚寶盆
優(yōu)秀的程序員并不一定要是優(yōu)秀的計算機科學家。同樣的,并不是所有的編程語言都一定要是異常嚴密的。微軟的.Net平臺,它的CLI(Common Language Infrastructure,通用語言基礎(chǔ)結(jié)構(gòu))是新語言的豐富來源。維基百科上說該平臺現(xiàn)在至少支持55種語言,而且它們之間擁有充分的互操作性。
更有趣的新東西來自微軟本身,新出現(xiàn)的Axum語言可以讓開發(fā)者在多核心和多重處理的硬件上更容易的編寫程序。你可能還記得去年我寫過Sun的Fortress語言,它有類似的目的。而Axum更有趣些,因為它并非想全部復制Java或C++等系統(tǒng)語言的所有功能,而是專門為并行化設(shè)計。在Axum里你甚至不能定義對象,這和一些其他的CLI語言比如C#是不同的。Axum所作的一切就是簡化多重處理,讓工作變得更友好,而這個任務(wù)傳統(tǒng)語言做起來卻很棘手。在51CTO.com與有著Windows編程教父之稱Jeffrey的一次關(guān)于未來編程語言的發(fā)展方向的對話中,Jeffrey也提到:未來編程語言的發(fā)展將更加自動化,智能化。
在.NET平臺之后,開放的JVM也收到了廣泛的歡迎。許多開發(fā)語言現(xiàn)在已經(jīng)可以編譯為Java字節(jié)碼,其中一些相當有趣。比如已經(jīng)擁有不少支持者的Groovy,它提供了類似Java的語法但實際上是一種動態(tài)語言,和Perl、Python和Ruby類似。它們提供給開發(fā)者Java運行時的安全性與穩(wěn)定性,但編寫起來不像Java語法那么嚴格。
還有一些語言并不在現(xiàn)有的平臺之中,但也已經(jīng)在商業(yè)應(yīng)用上得到接受。例如Lua,一種輕重量級嵌入式腳本語言,已經(jīng)在很多商業(yè)項目包括視頻游戲開發(fā)中得到應(yīng)用,比如魔獸世界,還有其他許多游戲。
主流之外的成功
在大多數(shù)情況下,這些非主流的語言只有在特殊用途、小項目和研究時才會出現(xiàn)。但是,并非每個企業(yè)都不敢邁出跨越Java和C++這一步。例如,博客***Twitter最近就宣布,計劃放棄其目前的架構(gòu),基于Scala語言進行全新的設(shè)計。Scala和Groovy有些相似,在JVM上運行。Twitter的工程師Alex Payne說,“我們知道人們能夠用C++寫出性能***的代碼……但我們真的喜愛Scala,值得為它賭一下。”
提醒你一下,Twitter可能并不是個好的參考案例。因為它的原始架構(gòu)是用Ruby寫的,當時也幾乎沒有人敢用Ruby來賭一下。況且考慮到Twitter的坎坷經(jīng)歷,他實在是想換成什么架構(gòu)都不過分。
當然了,Twitter的例子還是值得考慮。而Scala這樣的語言要想得到風險投資家和行政管理層的信任還有待時間的考驗,在此之前,它們還是不得不屈尊在幾個“充滿激情”的程序員之間,就像Twitter剛創(chuàng)業(yè)時一樣,無論它們的潛力有多大。
現(xiàn)在,在開發(fā)經(jīng)理在各種不同的語言之間做出選擇之前,他們需要讓自己的團隊多了解幾種開發(fā)語言。這就是為什么我希望看到更多的計算機科學系學生能成為“多元化程序員”,而不是某一種語言的專家。我擔心那些把大部分時間都花在學習語法上的程序員會錯過更大的場面。良好的語言技巧永遠是最重要的工具,但全面扎實的軟件設(shè)計基礎(chǔ)將幫助你成為一個了不起的程序員,無論你使用什么語言。
【51CTO.com譯稿,合作站點轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】
原文:We need more polyglot programmers 作者:Neil Mcallister
【編輯推薦】