天天看點

哪種程式設計語言最适合你

做了這麼久的程式員,不得不說所有的程式設計語言我都讨厭。曾經想自創一門語言,但我沒搞明白到底需要一門什麼語言,是以也從未開始過。 這麼多語言的話我作為移動開發的小菜鳥接觸最多的還是java。收集總結了關于每種程式設計語言的特點,來看一下,哪個是你想要的菜。

  1. Java

    喜歡Java的人肯定喜歡打字。我指的就是敲打鍵盤上的鍵。你得不斷地重複又重複。

    設計Java系統的人是個瘋子,他解決問題的方式就是,設計模式。如果你把設計模式看作是這個語言中解決問題的一種方式,那麼你會發現Java裡有許多這樣的設計模式。

    另一方面,Sun的這些家夥的确是費了點心思在Java規範上的,這使得它能運作在嵌入式系統上,是以這塊我們還是堅持在使用它。我很難相信Python或者C在我的手機桌面系統上運作。還有,那些個目錄又是怎麼回事?我必須得使用Eclipse,因為隻有它知道怎麼跳過那1000個字長的路徑名。如果我在應用的同一個目錄下放10個類,會不會傷害到某些人?

  2. C

    C是精确的。當我用C寫程式的時候,如果搞定了,我知道它是靠譜的。它就像是用一把小刷子在畫一幅巨作。在這麼詳細的層面上寫代碼需要一種不同的心态。當你坐下來寫C的時候,在動手之前你就得規劃好到底怎麼寫。否則後面肯定得費很多工夫去改。

    如果你的經驗足夠豐富,記憶體洩露這種事就不太會找上門。它的第二特性——malloc/free總是形影不離。你不能忘了任何一個。否則就像是忘了沖水或者關燈。你就這麼做就是了。

    有句話說得好,如果你打算給房子上漆,一把好刷子可遠遠不夠。我猜你肯定想要個大滾軸。如果讓我寫一整個應用或者系統,能不用C的話我肯定不用。

    C程式想要進行改動可得費老勁了。當我寫算法的時候,我知道第一遍肯定是不會對的,是以我通常都先用Python寫,搞定了之後再翻譯成C的。

  3. C++

    它就是個有string類的C。同時還有數組,清單,隊列等東西,你可以用它們來實作你想要的。一言以蔽之:别想着自創新模闆。這太困難了。除了這個,C++還改良了一下C,用C++你可以寫出非常不錯的軟體。它這個額外的特性使得它可以用于一些大型系統上,隻要大家都還遵循同樣的限制的話,難度還不算太大。

  4. JavaScript

    這是個沒人喜歡的語言。不過它喜歡你。當你剛開始學習它的時候,你可能會寫出一些非常糟糕的代碼,把對象用作字典,别的對象作KEY,不過這樣也是OK的,因為這些代碼運作起來也沒有什麼問題,隻要浏覽器還支援JavaScript就好。

    JavaScript沒有連接配接器,是以所有的代碼都共享一個命名空間,不過還好大家都知道這一點,是以還能一起和諧相處。

  5. CoffeeScirpt

    CoffeeScirpt是一個解釋器,它将那些長得像Ruby的奇怪的語言逐行地翻譯成JavaScript。它是一個擁有所有外來文法的JavaScript——括号,方括号,額外關鍵字移除。隻有代碼的基本含義還保留着。

    CoffeeScirpt挺不錯的。如果你要寫很多代碼的時候,它能讓你提高至少25%的效率。你可以一次在螢幕上看到更多行的代碼。

    當你用CoffeeScript寫代碼的時候,你得時刻記住這是要生成JavaScript的。問題就在這。你得先去學習JavaScript。項目來的新人都得先學JavaScript,然後才能學CoffeeScript,最後才能去學習項目代碼。

  6. node.js

    我也希望能愛上它。我覺得我給過它機會了。它的回調讓我無法忍受。我知道會有這麼一天,因為某個原因,其中一個回調并沒有出現,然後我的應用就會堵在那一直等待。真是要了命了。

    還有一點就是,它幾乎沒有内建任何東西。如果你要做某件事情,總是會有一大堆子產品來實作這個功能的。該選哪個呢?如果出現問題了,哪個子產品會有人來支援?

  7. Scala

    Scala是一門函數式,強類型的語言,它會編譯成JVM代碼。

    我是在工作中學的Scala。有一家初創公司的生産系統用的是它,我是在後期才加入他們的。

    這讓我看到了Scala醜陋的一面:類型推導。類型推薦被它用到了極緻。每個對象都有類型,不過想确定它是什麼類型的,你得檢查不同分層上的好幾個檔案才行。Scala也繼承了Java的檔案夾的壞毛病,是以你要查找某個類型的話得進入好幾層目錄才能找到對應的那個檔案。

    簡而言之,Scala是極好的——對于那些最初的開發人員而言。新加入的成員為了熟悉現有的代碼,得有一個很長的學習曲線。

  8. Erlang

    Erlang也是我曾經想愛上的一位。我真的努力了。它是一門美麗的函數式語言,它可以寫出很精緻的小子產品,它們以一種精确的方式進行通信,你的系統可以運作10年以上,因為它能處理未知問題,如果必要的話還會重新開機,然後繼續運作。

    不過它的結構太複雜了。開發似乎要停留在伯克利發明socket的那個年代。目前時代所需的東西幾乎一樣都沒有。為什麼開發一個簡單的WEB服務需要費這麼大的工夫?

  9. Go

    Go很容易學習,對于新人而言也是如此。它使用40年前的語言概念來建構一個健壯的異步系統,但它讓你能像寫同步代碼一樣程式設計。你可以不費吹灰之力寫出1000個可以安全工作的線程。

    在庫支援方面它仍需要改進。當我想做某事的時候,該用哪個庫——github上2011年的那個,還是2013年開始的那個半成品?一個是官方首頁連結的,不過它的官方首頁看起來并不是最新的。好吧,我覺得我還是自己寫一個吧。。。

    還有,為什麼追加元素到數組裡也這麼費勁?

  10. Python

    在Python裡,不管你想做什麼都會有一個對應的庫,如果你用的是Linux,它絕對是不二選擇,因為它可以一鍵安裝。

    如果你想做些數字處理或者科學運算,選擇Python吧,你值得擁有。

    Python中的字元串即可能是文本的也可能是二進制的,是以你得上來就學習下文本編碼的東東。

  11. Python 3

    Python 3和Python有許多共同的特性,不過它卻是門不同的語言。由于它比較新,是以支援的并不是很好。我也想使用它,不過總會有那麼一個庫,它是隻支援Python 2的。

     作為程式員,許多時候,你沒法選擇使用哪種語言。但是不管你在用哪種語言,都需要嘗試去接受它的優點和缺點。