有程序员的地方就会有因为对编程语言的探讨而引发的战争(例如Linux之父Linus Torvalds炮轰C++ 一无是处,认为C++既无助于简化,以实际用于进行原型化或者简单的GUI编程,又不是像C那样的简洁的系统编程语言,能够积极地鼓励开发者使用简单和直接的语言构造;而另一位大牛Paul Graham则强烈鄙视Java,认为使用Java的公司都不足为惧)。同样的,CSDN软件研发频道每个月根据TIOBE的数据编译的语言排行榜也在一定程度上代表了开发语言的流行趋势,由此引发程序员们的热烈讨论。
有两个人的地方就有政治,有两个程序员的地方就会有关于编程语言的争论。当然,本文的目的不是为了引发语言战争,而是通过信息列表的方式来比较不同语言的功能特性,为开发者提供参考。其实对于一个产品的开发来说,语言选择不是最重要的。关键是哪种语言更适合。工具毕竟只是工具。如同电视里面经常有一些工夫高手,利用树叶杀人。其实就是鲜活的例子。
本文信息和数据出自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)。
每种语言列举的功能包括算术和逻辑/字符串/正则表达式/时期和时间/数组(阵列)/字典/功能/文件控制执行/目录/进程与环境;库和模块/对象/映射/Web/测试/调试与分析/交互性/ ,以及语言诞生时间、版本号、hello写法的比较等等。
一、解释型语言: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