怪异的编程语言
原文:Weird Languages
作者:Paul Graham 发表:2021-08
译者:Claude(baoyu-translate)
当有人说“按我的经验,所有编程语言基本等价“时,他说的并不是语言,而是他做过的那种编程。
99.5% 的编程,是在把对库函数的调用粘合起来。所有流行语言在这件事上一样好。所以一个人完全可以一辈子都在“流行语言的交集“里工作。
但另外那 0.5% 的编程,分量大得不成比例。要想知道它具体由什么构成,“怪异的语言为什么怪“是个不错的线索。
怪异的语言不是偶然怪的——至少好的那些不是。好的怪异语言之所以怪,通常意味着背后存在某种不只是把库调用粘起来的编程方式。
举个具体例子:Lisp 宏(Lisp 里能在编译期改写代码的元编程机制)。Lisp 宏对许多 Lisp 程序员自己来说也显得怪。它不仅不在流行语言的交集里,按其本质,要在另一门语言里把它正确地实现出来——几乎就是把那门语言改造成 Lisp 的某种方言。宏明确地是“超出粘合编程“的证据。比如说:先为某一类问题写一门语言,再用这门语言写出你具体的应用。这并不是宏全部能做的事;它只是“操纵程序的技法“这片空间里的一个区域——而那片空间至今仍远远没有被充分探索。
所以,如果你想拓宽你对“编程能是什么“的概念,一种办法是去学一门怪异的语言。挑一门“大多数程序员都觉得怪、但中位数用户都很聪明“的——然后把焦点放在它与“流行语言交集“之间的差异上。问自己:在这门语言里能说出什么,是在别的语言里麻烦到几乎做不到的?在学会“说出从前说不出的东西“的过程里,你大概也在学会“想出从前想不出的东西“。