PG Paul Graham 文集
100%
Part 1 · 近期文章 Recent Essays

奇异语言

2021年8月

当人们说,就他们的经验而言,所有编程语言基本上都大同小异时,他们其实不是在评价语言本身,而是在描述他们自己从事过的那类编程工作。

99.5%的编程工作无非是把对库函数的调用拼接起来。所有主流语言在这方面都同样出色。因此,一个人完全可以在主流编程语言的交集地带度过整个职业生涯。

但剩下的那0.5%的编程却格外引人入胜。如果你想了解这0.5%究竟包含什么,那么怪异语言(weird languages)的“怪异之处”便是一条很好的线索。

怪异语言并非无缘无故地怪异——至少那些优秀的怪异语言不是。它们的怪异通常意味着存在着某种编程形式,而不仅仅是寻常的库函数调用拼接。

举个具体的例子:Lisp 宏。即使在许多 Lisp 程序员看来,Lisp 宏也显得颇为怪异。它们不仅不在主流语言的交集之内,而且本质上,若要在其他语言中妥善实现,几乎不可避免地会将其变成 Lisp 的一种方言。宏无疑是超越“胶水式编程”的技术证据。例如,你可以先针对某类问题编写一门语言,然后再用这门语言来编写你的具体应用。宏的能耐远不止于此;这只是程序操控技术空间中的一个区域,即便到了今天,这片空间也远未被充分探索。

因此,如果你想拓展自己对编程可能性的认知边界,一个途径就是去学习那些怪异语言。选一门大多数程序员认为怪异、但其典型用户都很聪明的语言,然后专注于这门语言与主流语言交集地带的差异。在这门语言里,你能表达哪些在其他语言中极不方便表达的东西?在学习表达以往无法表达之事的过程中,你很可能也在学着思考以往无法思考之事。