編程語言的選擇

jopen 11年前發布 | 8K 次閱讀 編程語言

        選擇使用什么樣編程語言對于一個項目來說是一個最關鍵的技術決策。因為這項決策會影響到項目框架結構和你所能夠利用上的資源,以及雇傭員工。既然如此,你是如何去選擇編程語言的呢?

        事實上,你很有可能采取一些大眾化的做法,去引用在上個項目里所使用過的一些語言。或許你是一位對新鮮事物比較敏感的潮人,你會選擇一些最新最 酷的語言。幾年前,很多很棒的年輕人已經蓄意待發。而現在他們讓我意識到他們創造的節點是多么的棒,以及 clojures 已經達到了一定的程度。上次我還注意到,他們圖靈完備的語言跟我的已經具有相同的解決問題的能力。實際上,他們還堅持認為他們的語言給了圖靈語言更強的表 現力,更快的編寫以及更低成本的維護。

編程語言的選擇

        合適的工具,合適的工作

        古人云:工欲善其事,必先利其器。如果你需要自動運行一些命令執行的維護任務,可使用一些擅長腳本編程的語言:如 bash,perl,,hell even ruby;不要用 Java. 如果你要解決的問題需要一個在微軟操作系統的環境里能夠無縫整合的桌面客戶端,可以使用C#,不要用 Java (Java 桌面的粉絲,先冷靜一下)。如果解決的問題需要處理大量的 XML,以及你喜歡處理層積追蹤,那當然要使用 Java.

        通常來說最大的區別歸結為規則系統的復雜性。如果你從事的工作具有很多規則系統算法上的復雜性,使用一些能夠擅長于表達的東西:一種函數式語 言,像 haskell 或者F#。或者就像 90% 的網頁應用那樣,做的就是數據的輸入和輸出,你需要一種具有較好的面向對象能力的語言去嘗試塑造你的領域:Java 和 C# 都是很好的選擇,以及還有 幾乎所有的其它的現代語言。

        Scala

        或許你非常痛恨自己想要妥協:為什么當你能選擇兩個的時候,而只選擇函數的或程序的其中一個?為什么會遺漏這些語言的特色,要知道在過去的 50 年里你能擁有它們全部,而現在是煎熬在一團糟的語言上?是的,如果這聽起來像你,你可能認為你是一位對新鮮事物敏感的潮人,但是,事實上你錯失了數年的良 機:是時候去了解一些 Scalas 了。

        我猜測 Scala 能夠如此流行的大部分原因是它最終為所有沮喪的 Java 開發者帶來了它們想要的語言工具。現在 Java 實在是一種超級反應遲鈍的語言,使用它工作時感覺非常的失望。有些人轉換去使用C#,我也開始喜歡使用新的華而不實的語言工具。它們有讓代碼變得更好嗎? 很多的新語言的引進,提升了復雜性和增加了豐富性,但也使得代碼很難被理解和不容易后期的維護。

        重點是,Java 是一種玩具語言:白癡都可以寫出像樣的合乎規范的 Java. 不過麻煩是,Java 這類玩具語言,編程的人無論他們有多牛,每個人還是被迫去編寫冗長的愚蠢的 Java 代碼。這也使得很多技術牛人不能通過編寫難以破解的廢物來證明他們的水平。我也擔心 Lambdas 將對 Java 代碼庫的可維護性帶來沖擊,以致每個人開始尋找新的令人困惑的方式來表達一切。

        雇傭

        另一個原因影響開發人員去選擇合適的編程語言,就是你可以選擇被雇傭。不過這是真的嗎?我現在在 C# 辦公點工作,我藐視了 Java 開發者嗎?當然沒有。一個好的開發者就是一個好的開發者,跟語言沒什么關系。拒絕潛在的新人是因為他們所知道的的語言是反應遲鈍的弱智語言。

        麻煩的是:如果你認為僅僅雇傭 python 或者 node 開發者可以讓你提升到一個更高的開發人員的標準:你錯了。你選擇的空間會變得更加狹窄。或許那個空間的平均質量會高一些, 但誰知道?誰在意呢?我只需要一個開發者,我希望她是在我能雇傭的人中最好的,跟平均值沒什么關系。

        語言和能力之間沒有必然的聯系:我遇到了一些非常聰明的 Java 開發人員和一些十足可怕的自認為消息靈通的開發者。我寧愿盡可能多的雇傭樂于使用我們所使用的技術的優秀的開發人員,而不是去限制我能召集到人才的機會,坦誠的說,目前已經很受限制了。

        我聽說到的另一個爭論是,你所使用的技術會限制應聘者為你工作的意愿 --- 一些開發者就想在指定的平臺工作,比如 clojure. 其實,他們阻礙了自己成長。我寧愿要那些主動想去解決有趣問題的人員,不用去考慮語言,而不是那些只解決垃圾問題的自以為是的潮人。如 果你是在銀行工作,碰到的都是很胡扯的問題嗎?當然,可以直接用一種自以為是潮人的語言如果它能夠幫助你雇傭到足夠的傻子。它會使很多人才遠離我。

        通用語言

        將所有使用潮人語言的程序員集中在一起,讓他們組成一個團隊。會發生什么呢?意外的是,你看到了一堆 C# 和 Java 的開發人員。因為幾乎每一個開發人員都知道這兩種語言中的一種----它們是通用語言。反之如果沒有組成一個團隊,他們只不過是一群水平參差不齊潮人語言 開發人員。

        事實上最重要的事情是當你選擇一種語言時,取決于你的團隊中會有多少開發人員熟悉這種語言,以及你打算雇傭的人有多少人了解這種語言。如果團隊 中的每個人需要重新培訓,像 smalltalk;以及你雇傭的每個人需要手把手指導學習新語言---這是你必須考慮的成本因素,什么樣的利益和你會從中獲得什么好處?

        其次,你是否可以在遇到問題時比較容易的獲得支持幫助?Java 的開源社區非常棒---當你遇到一個問題,他們已經至少有 15 個不同的解決方案,其中有一些甚至可行。如果你使用C#,那么你的選擇會非常有限---但是將會有選擇,有些不是來自微軟的支持。如果你使用最新的潮人語 言,猜猜會發生什么? 你就只能靠自己。不過對于有些人來說,這正是潮人語言所吸引他們的地方。但對于我們這些想要把工作做好的人來說,這是一種痛苦。

        最后,最好的建議還是傾向使用上一個項目相同的語言:因為每個人都已經熟悉它,以及所需的工具也已經安裝部署完成。這就是為什么 Java 迅速成為新一代 cobol(譯者注:第一個廣泛使用的高級編程語言)的原因。

        本文由 APKBUS.com chino 和他的翻譯小組 MISS-Chen 翻譯,轉載請注明

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!