導讀:有程序員的地方就會有因為對編程語言的探討而引發(fā)的戰(zhàn)爭(例如Linux之父Linus Torvalds炮轟C++ 一無是處,認為C++既無助于簡化,以實際用于進行原型化或者簡單的GUI編程,又不是像C那樣的簡潔的系統編程語言,能夠積極地鼓勵開發(fā)者使用簡單和直接的語言構造;而另一位大牛Paul Graham則強烈鄙視Java,認為使用Java的公司都不足為懼)。同樣的,CSDN軟件研發(fā)頻道每個月根據TIOBE的數據編譯的語言排行榜也在一定程度上代表了開發(fā)語言的流行趨勢,由此引發(fā)程序員們的熱烈討論。
有兩個人的地方就有政治,有兩個程序員的地方就會有關于編程語言的爭論。當然,本文的目的不是為了引發(fā)語言戰(zhàn)爭,而是通過信息列表的方式來比較不同語言的功能特性,為開發(fā)者提供參考。其實對于一個產品的開發(fā)來說,語言選擇不是最重要的。關鍵是哪種語言更適合。工具畢竟只是工具。如同電視里面經常有一些工夫高手,利用樹葉殺人。其實就是鮮活的例子。
本文信息和數據出自hyperpolyglot,將當前主流編程語言分為11個大類,分別為:解釋型(PHP,Perl,Python,Ruby,Tcl,Lua,JavaScript,Io)、操作系統自動化型(POSIX Shell,AppleScript,PowerShell)、C++風格(C++,Objective C,Java,C#)、Pascal風格(Pascal,Ada,PostgreSQL,MySQL)、Lisp類(Common Lisp,Scheme,Clojure,Emacs Lisp)、類型推理類(Standard ML,OCaml,Scala,Haskell)、聲明型(Prolog,Erlang,Oz)、Concatenative語言(Forth,PostScript,Factor)、數據轉換(SQL,Awk,Pig,XSLT)、計算機代數(Maxima,Mathematica,Sage)、數字分析類(Fortran,MATLAB,R,NumPy)。
每種語言列舉的功能包括算術和邏輯/字符串/正則表達式/時期和時間/數組(陣列)/字典/功能/文件控制執(zhí)行/目錄/進程與環(huán)境;庫和模塊/對象/映射/Web/測試/調試與分析/交互性/ ,以及語言誕生時間、版本號、hello寫法的比較等等。
注:因原圖太大,文中僅截取了部分圖片,詳細請點擊上圖。(下同)
二、解釋型語言:Tcl, Lua, JavaScript, Io
三、操作系統自動化: POSIX Shell, AppleScript, PowerShell
四、C++風格: C++, Objective C, Java, C#
五、Pascal風格: Pascal, Ada, PostgreSQL, MySQL
六、Lisp類: Common Lisp, Scheme, Clojure, Emacs Lisp
七、類型推理類: Standard ML, OCaml, Scala, Haskell
九、Concatenative語言:Forth, PostScript, Factor
十一、計算機代數: Maxima, Mathematica, Sage