Weird Languages

Paul Graham

奇怪的语言

当人们说,根据他们的经验,所有编程语言基本上都没什么区别时,他们说的其实不是语言,而是他们所从事的编程类型。

99.5%的编程工作都是把对库函数的调用粘合在一起。所有流行语言在这方面都同样出色。因此,一个人很容易一辈子都只在流行编程语言的交集之中工作。

但剩下的 .5% 编程工作却有着与其比例不相称的趣味。如果你想了解它包含什么,奇怪语言的种种怪异之处是一个很好的线索。

奇怪语言之所以奇怪,并非偶然。至少优秀的奇怪语言不是这样。优秀语言的怪异之处通常意味着,存在某种形式的编程,而不仅仅是把库调用粘合在一起,也就是所谓的 glue programming(胶水式编程)。

举个具体的例子:Lisp macros(Lisp 宏)。即使对许多 Lisp 程序员来说,Lisp 宏也显得很奇怪。它们不仅不属于流行语言的交集,而且由于其本质,要在一种语言中正确实现它们相当困难,除非把那种语言变成 Lisp 的一种方言。而宏无疑证明了存在超越胶水式编程的技术。比如,可以先为某一类问题编写一种语言,再用这种语言编写你的具体应用,从而解决问题。当然,宏能做的也不止这些;这只是一个程序操纵技术空间中的区域,而即使到了现在,这个空间也远未得到充分探索。

所以,如果你想拓展自己对编程可能性的理解,一个办法就是学习奇怪的语言。选择一种大多数程序员都认为奇怪、但其典型用户很聪明的语言,然后专注于研究这种语言与流行语言交集之间的差异。在这种语言中,有哪些事情你可以表达,而用其他语言表达会极其不便?在学习如何表达那些你以前无法表达的东西的过程中,你很可能也会学会如何思考那些你以前无法思考的东西。

感谢 Trevor Blackwell(特雷弗·布莱克威尔)、Patrick Collison(帕特里克·科里森)、Daniel Gackle(丹尼尔·加克尔)、Amjad Masad(阿姆贾德·马萨德)和 Robert Morris(罗伯特·莫里斯)审阅本文的草稿。

原文由 Paul Graham 发布

本文章由 openai/gpt-5.6-luna 进行翻译