Glean 拾遗
专辑 / Paul Graham 文集 / 编程语言都在解决什么问题?

编程语言都在解决什么问题?

原文 www.paulgraham.com 收录 2026-07-04 20:39 阅读 1 min
AI 解读

Paul Graham 通过 Kevin Kelleher 提出的视角,以“修复的问题”来描述每种编程语言的设计初衷,揭示了语言演化的历史脉络。从 Algol 到 Ruby,每个语言都是针对前代缺陷或特定需求的回应。这种简洁的对比不仅幽默,也为工程师理解语言选择提供了独特视角。适合对编程语言历史与设计感兴趣的读者。

原文 1 分钟
原文 www.paulgraham.com ↗
§ 1

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 提出了一种比较编程语言的有趣方式:根据每种语言解决的问题来描述它。令人惊讶的是,如此多的语言能够被这样描述,而且描述得如此贴切。

§ 2

Algol: Assembly language is too low-level.

Algol:汇编语言过于底层。

§ 3

Pascal: Algol doesn't have enough data types.

Pascal:Algol 没有足够的数据类型。

§ 4

Modula: Pascal is too wimpy for systems programming.

Modula:Pascal 对于系统编程来说太弱了。

§ 5

Simula: Algol isn't good enough at simulations.

Simula:Algol 在模拟方面不够好。

§ 6

Smalltalk: Not everything in Simula is an object.

Smalltalk:Simula 中并非一切都是对象。

§ 7

Fortran: Assembly language is too low-level.

Fortran:汇编语言过于底层。

§ 8

Cobol: Fortran is scary.

Cobol:Fortran 令人害怕。

§ 9

PL/1: Fortran doesn't have enough data types.

PL/1:Fortran 没有足够的数据类型。

§ 10

Ada: Every existing language is missing something.

Ada:每种现有语言都缺少某些东西。

§ 11

Basic: Fortran is scary.

Basic:Fortran 令人害怕。

§ 12

APL: Fortran isn't good enough at manipulating arrays.

APL:Fortran 在数组操作上不够好。

§ 13

J: APL requires its own character set.

J:APL 需要自己的字符集。

§ 14

C: Assembly language is too low-level.

C:汇编语言过于底层。

§ 15

C++: C is too low-level.

C++:C 过于底层。

§ 16

Java: C++ is a kludge. And Microsoft is going to crush us.

Java:C++ 是个拼凑物,而且微软要碾压我们。

§ 17

C#: Java is controlled by Sun.

C#:Java 由 Sun 控制。

§ 18

Lisp: Turing Machines are an awkward way to describe computation.

Lisp:图灵机是一种笨拙的描述计算的方式。

§ 19

Scheme: MacLisp is a kludge.

Scheme:MacLisp 是个拼凑物。

§ 20

T: Scheme has no libraries.

T:Scheme 没有库。

§ 21

Common Lisp: There are too many dialects of Lisp.

Common Lisp:Lisp 的方言太多。

§ 22

Dylan: Scheme has no libraries, and Lisp syntax is scary.

Dylan:Scheme 没有库,而且 Lisp 语法吓人。

§ 23

Perl: Shell scripts/awk/sed are not enough like programming languages.

Perl:Shell 脚本/awk/sed 不够像编程语言。

§ 24

Python: Perl is a kludge.

Python:Perl 是个拼凑物。

§ 25

Ruby: Perl is a kludge, and Lisp syntax is scary.

Ruby:Perl 是个拼凑物,而且 Lisp 语法吓人。

§ 26

Prolog: Programming is not enough like logic.

Prolog:编程不够像逻辑。

打开原文 ↗