编程语言修复了什么
编程语言修复了什么
凯文·凯勒her建议了一种比较编程语言的有趣方式:用每种语言所要解决的问题来描述它。令人惊讶的是,有多少语言可以用这种方式很好地描述。
Algol:汇编语言太底层了。
Pascal:Algol没有足够的数据类型。
Modula:Pascal对于系统编程来说太弱了。
Simula:Algol在模拟方面不够好。
Smalltalk:Simula中的一切都不是对象。
Fortran:汇编语言太底层了。
Cobol:Fortran太吓人了。
PL/1:Fortran没有足够的数据类型。
Ada:每种现有语言都缺少某些东西。
Basic:Fortran太吓人了。
APL:Fortran在操作数组方面不够好。
J:APL需要自己的字符集。
C:汇编语言太底层了。
C++:C太底层了。
Java:C++是一个混乱的东西。而且微软要打压我们。
C#:Java被Sun控制着。
Lisp:图灵机是描述计算的笨拙方式。
Scheme:MacLisp是一个混乱的东西。
T:Scheme没有库。
Common Lisp:Lisp有太多方言。
Dylan:Scheme没有库,而且Lisp语法太吓人了。
Perl:Shell脚本/awk/sed不够像编程语言。
Python:Perl是一个混乱的东西。
Ruby:Perl是一个混乱的东西,而且Lisp语法太吓人了。
Prolog:编程不够像逻辑。
What Languages Fix
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: Assembly language is too low-level.
Pascal: Algol doesn’t have enough data types.
Modula: Pascal is too wimpy for systems programming.
Simula: Algol isn’t good enough at simulations.
Smalltalk: Not everything in Simula is an object.
Fortran: Assembly language is too low-level.
Cobol: Fortran is scary.
PL/1: Fortran doesn’t have enough data types.
Ada: Every existing language is missing something.
Basic: Fortran is scary.
APL: Fortran isn’t good enough at manipulating arrays.
J: APL requires its own character set.
C: Assembly language is too low-level.
C++: C is too low-level.
Java: C++ is a kludge. And Microsoft is going to crush us.
C#: Java is controlled by Sun.
Lisp: Turing Machines are an awkward way to describe computation.
Scheme: MacLisp is a kludge.
T: Scheme has no libraries.
Common Lisp: There are too many dialects of Lisp.
Dylan: Scheme has no libraries, and Lisp syntax is scary.
Perl: Shell scripts/awk/sed are not enough like programming languages.
Python: Perl is a kludge.
Ruby: Perl is a kludge, and Lisp syntax is scary.
Prolog: Programming is not enough like logic.