古怪的语言

2021年8月

当人们说在他们看来所有编程语言基本上都差不多时,他们不是在谈论语言本身,而是在谈论他们所做过的那种编程。

99.5%的编程工作就是将库函数的调用粘合在一起。所有流行的语言在这方面都同样出色。因此,一个人可以轻松地在流行编程语言的交集领域度过整个职业生涯。

但剩下的0.5%的编程工作却异常有趣。如果你想了解它包含什么,古怪语言的古怪之处就是一个很好的线索。

古怪的语言并非偶然古怪。至少好的古怪语言不是。好的古怪语言的古怪之处通常意味着存在某种形式的编程,而不仅仅是通常的库函数调用粘合。

一个具体的例子:Lisp宏。Lisp宏甚至对许多Lisp程序员来说都显得古怪。它们不仅不在流行语言的交集中,而且就其本质而言,很难在不将语言变成Lisp方言的情况下正确实现。宏绝对是超越粘合编程技术的证据。例如,通过首先为那种类型的问题编写一种语言,然后在其上编写你的具体应用程序来解决问题。这也不是你能用宏做的全部;它只是程序操作技术空间中的一个区域,即使到现在也远未被完全探索。

因此,如果你想扩展你对编程可能性的概念,一种方法就是学习古怪的语言。选择一种大多数程序员认为古怪但其中位用户聪明的语言,然后专注于这种语言与流行语言交集之间的差异。在这种语言中,你能说什么在其他语言中表达起来极其不便?在学习如何表达你以前无法表达的东西的过程中,你可能会学习如何思考你以前无法思考的东西。

感谢 Trevor Blackwell、Patrick Collison、Daniel Gackle、Amjad Masad和Robert Morris阅读本文的草稿。