凯文·凯莱赫(Kevin Kelleher)提出了一种有趣的编程语言对比方法:用每种语言所解决的问题来描述它。令人惊讶的是,竟然有如此多的语言可以用这种方式来描述,而且描述得如此贴切。
Kevin Kelleher suggested an interesting way to compare programming languages: to describe each in terms of the problem it fixes. The surprising thing is how many, and how well, languages can be described this way.
Algol: 汇编语言太底层了。
Algol: Assembly language is too low-level.
Pascal: Algol 的数据类型不够多。
Pascal: Algol doesn't have enough data types.
Modula: Pascal 用来做系统编程太软弱了。
Modula: Pascal is too wimpy for systems programming.
Simula: Algol 不太适合做模拟。
Simula: Algol isn't good enough at simulations.
Smalltalk: Simula 里面并非一切皆对象。
Smalltalk: Not everything in Simula is an object.
Fortran: 汇编语言太底层了。
Fortran: Assembly language is too low-level.
Cobol: Fortran 太吓人了。
Cobol: Fortran is scary.
PL/1: Fortran 的数据类型不够多。
PL/1: Fortran doesn't have enough data types.
Ada: 现有的所有语言都缺了点东西。
Ada: Every existing language is missing something.
Basic: Fortran 太吓人了。
Basic: Fortran is scary.
APL: Fortran 在处理数组方面不够好。
APL: Fortran isn't good enough at manipulating arrays.
J: APL 需要自己专属的字符集。
J: APL requires its own character set.
C: 汇编语言太底层了。
C: Assembly language is too low-level.
C++: C 语言太底层了。
C++: C is too low-level.
Java: C++ 是一个拼凑出来的烂摊子。而且微软要捏死我们了。
Java: C++ is a kludge. And Microsoft is going to crush us.
C#: Java 被 Sun 公司控制了。
C#: Java is controlled by Sun.
Lisp: 用图灵机来描述计算太别扭了。
Lisp: Turing Machines are an awkward way to describe computation.
Scheme: MacLisp 是一个拼凑出来的烂摊子。
Scheme: MacLisp is a kludge.
T: Scheme 没有库。
T: Scheme has no libraries.
Common Lisp: Lisp 的方言太多了。
Common Lisp: There are too many dialects of Lisp.
Dylan: Scheme 没有库,而且 Lisp 的语法太吓人了。
Dylan: Scheme has no libraries, and Lisp syntax is scary.
Perl: Shell 脚本/awk/sed 看起来不太像真正的编程语言。
Perl: Shell scripts/awk/sed are not enough like programming languages.
Python: Perl 是一个拼凑出来的烂摊子。
Python: Perl is a kludge.
Ruby: Perl 是一个拼凑出来的烂摊子,而且 Lisp 的语法太吓人了。
Ruby: Perl is a kludge, and Lisp syntax is scary.
Prolog: 编程看起来跟逻辑学不太沾边。
Prolog: Programming is not enough like logic.