What Languages Fix
Paul Graham shares a witty perspective on programming languages by describing each in terms of the problem it was designed to fix. From Algol's reaction to low-level assembly to Python's distaste for Perl's complexity, the list captures the evolutionary logic of language design. This concise, humorous comparison offers engineers a fresh way to think about language selection and the historical context of their tools.
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.
Kevin Kelleher 提出了一种比较编程语言的有趣方式:根据每种语言解决的问题来描述它。令人惊讶的是,如此多的语言能够被这样描述,而且描述得如此贴切。
Algol: Assembly language is too low-level.
Algol:汇编语言过于底层。
Pascal: Algol doesn't have enough data types.
Pascal:Algol 没有足够的数据类型。
Modula: Pascal is too wimpy for systems programming.
Modula:Pascal 对于系统编程来说太弱了。
Simula: Algol isn't good enough at simulations.
Simula:Algol 在模拟方面不够好。
Smalltalk: Not everything in Simula is an object.
Smalltalk:Simula 中并非一切都是对象。
Fortran: Assembly language is too low-level.
Fortran:汇编语言过于底层。
Cobol: Fortran is scary.
Cobol:Fortran 令人害怕。
PL/1: Fortran doesn't have enough data types.
PL/1:Fortran 没有足够的数据类型。
Ada: Every existing language is missing something.
Ada:每种现有语言都缺少某些东西。
Basic: Fortran is scary.
Basic:Fortran 令人害怕。
APL: Fortran isn't good enough at manipulating arrays.
APL:Fortran 在数组操作上不够好。
J: APL requires its own character set.
J:APL 需要自己的字符集。
C: Assembly language is too low-level.
C:汇编语言过于底层。
C++: C is too low-level.
C++:C 过于底层。
Java: C++ is a kludge. And Microsoft is going to crush us.
Java:C++ 是个拼凑物,而且微软要碾压我们。
C#: Java is controlled by Sun.
C#:Java 由 Sun 控制。
Lisp: Turing Machines are an awkward way to describe computation.
Lisp:图灵机是一种笨拙的描述计算的方式。
Scheme: MacLisp is a kludge.
Scheme:MacLisp 是个拼凑物。
T: Scheme has no libraries.
T:Scheme 没有库。
Common Lisp: There are too many dialects of Lisp.
Common Lisp:Lisp 的方言太多。
Dylan: Scheme has no libraries, and Lisp syntax is scary.
Dylan:Scheme 没有库,而且 Lisp 语法吓人。
Perl: Shell scripts/awk/sed are not enough like programming languages.
Perl:Shell 脚本/awk/sed 不够像编程语言。
Python: Perl is a kludge.
Python:Perl 是个拼凑物。
Ruby: Perl is a kludge, and Lisp syntax is scary.
Ruby:Perl 是个拼凑物,而且 Lisp 语法吓人。
Prolog: Programming is not enough like logic.
Prolog:编程不够像逻辑。