历史与人物twobithistory.org
Lisp 如何成为上帝自己的编程语言
How Lisp Became God's Own Programming Language
2018 — 2020,它一次次回到首页
黑点是上首页(≥ 50 分)的那次投稿,空心点是没冲上去的投稿,点越大分数越高。
导读
这篇文章讲述 Lisp 如何从 John McCarthy 的极简构造,演变为一种被赋予近乎神话色彩的语言:它在 AI 黄金时代成为研究者的共同语,也因 SICP 等文本塑造了一代程序员的启蒙体验。文章同时讨论 Lisp 的优雅、力量与围绕它的崇拜和争议。
为什么经久不衰:因为它同时触及可计算性的本质、抽象的力量和 AI 早期史,而 Lisp 的极简核心至今仍能引发“发明还是发现”的争论。
HN 评论精选
SICP 与 Lisp 密不可分,Lisp 的极简使其适合构造抽象,换别的语言很难保持同等优雅。
我特别喜欢“McCarthy 用如此基本的部件造出 Lisp,以至于很难说他是发明还是发现”这句话;这让人想到认识论问题。有人称 SICP 的概念足够通用、任何语言都行,我不同意:第 4 章要写 Lisp 解释器,换 C++ 会很丑,多数语言到不了那一步;SICP 之美正在于从原语构造抽象。我的 Lisp 入门也是 SICP,Racket 实用但 SICP 小而美,作者刻意少用语言特性。
default-kramer查看英文原文
> McCarthy built Lisp out of parts so fundamental that it is hard to say whether he invented it or discovered it. I loved that sentence! I'm guessing epistemology or a similar field has pondered the "invented or discovered" question already, and if so, I want to read about it. > [on SICP:] Those concepts were general enough that any language could have been used What?? In chapter 4, you write your own Lisp interpreter. If they had chosen C++, would you be writing a C++ compiler? Or a Lisp interpreter in C++? Either way, it would be ugly. And most languages would encounter problems even before they got to chapter 4. What made SICP great was building abstractions out of primitives. Most languages give you some abstractions, and others simply can't be built (at least not elegantly). I can't imagine SICP using a language that doesn't feel a lot like Lisp. That said, count me among the people whose first Lisp exposure was SICP. And yeah, it was really fun and really enlightening. I am loving Racket now, but Racket is big and practical. SICP is small and beautiful - as I recall, the authors deliberately avoid using most of the language. (They used Scheme, but I think Lisp would have worked fine too, right?)
Lisp 强大但生态与协作方式偏弱,是“语言很重要”的证据,而非终点。
Lisp 很强大,尤其同像性允许混合多个逻辑层次。SHRDLU 是经典例子,1968—70 年用 Lisp 做微观世界自然语言交流,源码里有大量即时修补来处理语言的不规则性。Lisp 的力量在于能快速产出复杂程序,但缺少把程序粘合起来的标准方式;《The Bipolar Lisp Programmer》说 Lisp 有许多重要库/程序的部分实现,因为这种语言让某种性格的人独自做出极好但不促进团队协作的东西。Lisp 证明“语言很重要”,但不证明到 Lisp 就该停止。
joe_the_user查看英文原文
Lisp is a powerful language that allows one to mix multiple logical levels within a program (especially through it's homoiconicity). Shrdlu is perhaps the most classic illustration of Lisp's power[1], A classic program from 1968-70 that allowed natural language communication about a micro world. It was written in a version of Lisp even more free-form than today. When I looked at the source code a while back, it's parsing of natural language involved a wide-variety of on-the-fly fix-ups and such to take into account the multiple irregularities of human language. The thing about Lisp's power is it allows the production of complex program quickly but doesn't particularly have a standard way of gluing these programs together. The other classic Lisp work, The Bipolar Lisp Programmer[2], describes how Lisp has multiple partial implementations of important libraries and programs simply because it allows a certain type of personality to by themselves produce something that's remarkably good but doesn't encourage any particular group effort. Lisp is certainly evidence that "language matters" but not evidence that Lisp is where one should stop. [1] https://en.wikipedia.org/wiki/SHRDLU [2] http://marktarver.com/bipolar.html
Lisp 的 AI 母语地位是美国语境,Prolog 在欧洲和日本同样重要。
文中说 Lisp 是 AI 的“母语”;更准确说是在美国。欧洲和日本当时 AI 产出也很大,却以 Prolog 为通用语。常见做法是用 Lisp 写逻辑编程语言解释器再推理,SICP 4.3 的查询语言就是带 Lisp 括号的 Prolog。因此 Prolog 程序员常回敬 Greenspun 第十定律:任何足够复杂的 Lisp 程序都包含一个临时、不完整、有 bug、缓慢的 Edinburgh Prolog 实现。
YeGoblynQueenne查看英文原文
>> Two decades after its creation, Lisp had become, according to the famous Hacker’s Dictionary, the “mother tongue” of artificial intelligence research. More precisely, Lisp became the "mother tongue" of AI research in the United States. Europe and Japan, which at the time also had a significant output into AI research, instead used Prolog as a lingua franca. This is interesting to note, because a common use of Lisp in AI was (is?) to write an interpreter for a logic programming language and then use that interpreter to perform inference tasks as required (this approach is evident, for example, in Structure and Interpretation of Computer Programs, which devotes chapter 4.3 to the development of a logic programming language, the query language, which is basically Prolog with Lisp parentheses). Hence the common response, by Prolog programmers, to Greenspun's tenth rule, that: Any sufficiently complicated Lisp program contains an ad-hoc, informally-specified, bug-ridden, slow implementation of Edinburgh Prolog.
Lisp 1.5 手册用极短解释器展示语言核心,这种清晰性至今罕见。
1977 年在 Waterloo 读《Lisp 1.5 Programmer's Manual》是启示;附录 B 只用 39 行代码给出 Lisp 解释器,我用它理解 Lisp 如何求值递归函数。此前用 Fortran、IBM 360 汇编、Cobol、Pascal,都需要更多文档和实验。我希望“权威高层语义指南”成为常态;SwiftUI 很好,但学习要大量讲座/教程,和 McCarthy 等人的书形成对比。
herodotus查看英文原文
Reading "Lisp 1.5 Programmer's Manual" when I was a post-graduate student at Waterloo (around 1977) was a revelation to me. In particular, "Appendix B: The Lisp Interpreter" gives a version of the Lisp interpreter in just 39 lines of code! (The appendix includes notes, and is 3 pages long.) I remember using this code to figure out how Lisp evaluated recursive functions. Until this point in time I had programmed in Fortran, IBM 360 Assembler, Cobol and Pascal. They all required much more documentation, and, in many cases, experiments to figure out what would actually happen in certain cases. I wish the idea of a definitive high-level semantic guide had become a thing. SwiftUI, for example, seems to be wonderful, but learning it, as far as I can tell, requires watching hours of talks, or working through many tutorials. What a contrast with McCarthey at. al's 1985 book.
历次讨论
同类还值得读
开发者无薪坚持完成 Mac 图形计算器:一个秘密项目的故事
Dev stays without pay to finish Mac Graphing Calculator as skunkworks project
苹果 Mac 图形计算器(Graphing Calculator)开发者的亲述:在项目被砍后,几位工程师在没有报酬、没有正式授权的情况下,以“地下项目”方式偷偷留在公司把软件做完…
历史与人物上首页 6 次 · 2009–2022pacifict.com理查德·费曼与 Connection Machine
Richard Feynman and the Connection Machine
长文回忆费曼晚年参与 Connection Machine 并行计算机项目的经历:他分析路由器、用自创的并行 Basic 编写 QCD 程序,也涉足细胞自动机等主题。
历史与人物上首页 5 次 · 2010–2021longnow.org编辑精选负 2000 行代码
-2000 Lines of Code
folklore.org 上 Andy Hertzfeld 记录的一则苹果 Macintosh 开发轶事:Bill Atkinson 被问到写了多少行代码时,回答“-2000 行…
历史与人物上首页 4 次 · 2014–2022folklore.org编辑精选Dennis Ritchie 的第一版 C 编译器(约 1972 年)
Dennis Ritchie’s first C compiler (c. 1972)
这个 GitHub 仓库保存了 Dennis Ritchie 约 1972 年编写的最早 C 编译器源码,是 C 语言和 Unix 早期历史的一手材料。
历史与人物上首页 4 次 · 2013–2025github.com一位破解赛马密码的赌徒
A Gambler Who Cracked the Horse-Racing Code (2018)
彭博社 2018 年的长篇特写,讲述数学家 Bill Benter 如何用统计模型和算法在赛马博彩中持续盈利、累计赢得近十亿美元的故事。
历史与人物上首页 4 次 · 2018–2024bloomberg.com