我眼中的程式語言
所有的程式語言我都討厭。曾經我想自創一門語言,但我沒搞明白到底需要一門什麼語言,所以也從未開始過。 許多時候,你沒法選擇使用哪種語言。不管我在用哪種語言,我都嘗試去接受它的優點和缺點。
Java
喜歡 Java 的人肯定喜歡打字。我指的就是敲打鍵盤上的鍵。你得不斷地重複又重複。
設計 Java 系統的人是個瘋子,他解決問題的方式就是,設計模式。如果你把設計模式看作是這個語言中解決問題的一種方式,那麼你會發現 Java 裡有許多這樣的設計模式。
另一方面,Sun 的這些傢伙的確是費了點心思在 Java 規範上的,這使得它能執行在嵌入式系統上,所以這塊我們還是堅持在使用它。我很難相信 Python 或者C在我的手機桌面系統上執行。
還有,那些個目錄又是怎麼回事?我必須得使用 Eclipse,因為只有它知道怎麼跳過那 1000 個字長的路徑名。如果我在應用的同一個目錄下放 10 個類,會不會傷害到某些人?

image
C
C 是精確的。當我用C寫程式的時候,如果搞定了,我知道它是靠譜的。它就像是用一把小刷子在畫一幅鉅作。在這麼詳細的層面上寫程式碼需要一種不同的心態。當你坐下來寫C的時候,在動手之前你就得規劃好到底怎麼寫。否則後面肯定得費很多工夫去改。
如果你的經驗足夠豐富,記憶體洩露這種事就不太會找上門。它的第二特性——malloc/free 總是形影不離。你不能忘了任何一個。否則就像是忘了沖水或者關燈。你就這麼做就是了。
有句話說得好,如果你打算給房子上漆,一把好刷子可遠遠不夠。我猜你肯定想要個大滾軸。如果讓我寫一整個應用或者系統,能不用C的話我肯定不用。
C 程式想要進行改動可得費老勁了。當我寫演算法的時候,我知道第一遍肯定是不會對的,所以我通常都先用 Python 寫,搞定了之後再翻譯成C的。
C++
它就是個有 string 類的C。同時還有陣列,列表,佇列等東西,你可以用它們來實現你想要的。一言以蔽之:別想著自創新模板。這太困難了。除了這個,C++還改良了一下C,用 C++ 你可以寫出非常不錯的軟體。它這個額外的特性使得它可以用於一些大型系統上,只要大家都還遵循同樣的約束的話,難度還不算太大。

image
JavaScript
這是個沒人喜歡的語言。不過它喜歡你。當你剛開始學習它的時候,你可能會寫出一些非常糟糕的程式碼,把物件用作字典,別的物件作 KEY,不過這樣也是 OK 的,因為這些程式碼執行起來也沒有什麼問題,只要瀏覽器還支援 JavaScript 就好。
JavaScript 沒有聯結器,因此所有的程式碼都共享一個名稱空間,不過還好大家都知道這一點,所以還能一起和諧相處。
CoffeeScirpt
CoffeeScirpt 是一個直譯器,它將那些長得像 Ruby 的奇怪的語言逐行地翻譯成 JavaScript。它是一個擁有所有外來語法的 JavaScript——括號,方括號,額外關鍵字移除。只有程式碼的基本含義還保留著。
CoffeeScirpt 挺不錯的。如果你要寫很多程式碼的時候,它能讓你提高至少 25% 的效率。你可以一次在螢幕上看到更多行的程式碼。
當你用 CoffeeScript 寫程式碼的時候,你得時刻記住這是要生成 JavaScript 的。問題就在這。你得先去學習 JavaScript。專案來的新人都得先學 JavaScript,然後才能學 CoffeeScript,最後才能去學習專案程式碼。

image
node.js
我也希望能愛上它。我覺得我給過它機會了。它的回撥讓我無法忍受。我知道會有這麼一天,因為某個原因,其中一個回撥並沒有出現,然後我的應用就會堵在那一直等待。真是要了命了。
還有一點就是,它幾乎沒有內建任何東西。如果你要做某件事情,總是會有一大堆模組來實現這個功能的。該選哪個呢?如果出現問題了,哪個模組會有人來支援?
Scala
Scala 是一門函式式,強型別的語言,它會編譯成 JVM 程式碼。
我是在工作中學的 Scala。有一家初創公司的生產系統用的是它,我是在後期才加入他們的。
這讓我看到了 Scala 醜陋的一面:型別推導。型別推薦被它用到了極致。每個物件都有型別,不過想確定它是什麼型別的,你得檢查不同分層上的好幾個檔案才行。Scala 也繼承了 Java 的資料夾的壞毛病,因此你要查詢某個型別的話得進入好幾層目錄才能找到對應的那個檔案。
簡而言之,Scala 是極好的——對於那些最初的開發人員而言。新加入的成員為了熟悉現有的程式碼,得有一個很長的學習曲線。

image
Erlang
Erlang 也是我曾經想愛上的一位。我真的努力了。它是一門美麗的函式式語言,它可以寫出很精緻的小模組,它們以一種精確的方式進行通訊,你的系統可以執行 10 年以上,因為它能處理未知問題,如果必要的話還會重啟,然後繼續執行。
不過它的結構太複雜了。開發似乎要停留在伯克利發明 socket 的那個年代。當前時代所需的東西幾乎一樣都沒有。為什麼開發一個簡單的 WEB 服務需要費這麼大的工夫?
Go
Go 很容易學習,對於新人而言也是如此。它使用 40 年前的語言概念來構建一個健壯的非同步系統,但它讓你能像寫同步程式碼一樣程式設計。你可以不費吹灰之力寫出 1000 個可以安全工作的執行緒。
在庫支援方面它仍需要改進。當我想做某事的時候,該用哪個庫——github 上 2011 年的那個,還是 2013 年開始的那個半成品?一個是官方主頁連結的,不過它的官方主頁看起來並不是最新的。好吧,我覺得我還是自己寫一個吧。。。
還有,為什麼追加元素到數組裡也這麼費勁?

image
Python
在 Python 裡,不管你想做什麼都會有一個對應的庫,如果你用的是 Linux,它絕對是不二選擇,因為它可以一鍵安裝。
如果你想做些數字處理或者科學運算,選擇 Python 吧,你值得擁有。
Python 中的字串即可能是文字的也可能是二進位制的,因此你得上來就學習下文字編碼的東東。
Python 3
Python 3 和 Python 有許多共同的特性,不過它卻是門不同的語言。由於它比較新,因此支援的並不是很好。我也想使用它,不過總會有那麼一個庫,它是隻支援 Python 2 的。

image
最後,給大家推薦一個 前端學習進階內推交流群685910553 (前端資料分享),不管你在地球哪個方位,
不管你參加工作幾年都歡迎你的入駐!(群內會定期免費提供一些群主收藏的免費學習書籍資料以及整理好的面試題和答案文件!)
如果您對這個文章有任何異議,那麼請在文章評論處寫上你的評論。
如果您覺得這個文章有意思,那麼請分享並轉發,或者也可以關注一下表示您對我們文章的認可與鼓勵。
願大家都能在程式設計這條路,越走越遠。