如果有人说,根据他的经验,所有的编程语言基本上都是一样的。他说的其实不是编程语言,而是编程的方式。

在编程中,99.5% 的工作都是整合调用各种库函数。在这方面,几乎所有流行的语言都是如此。在程序员的职业生涯中,只是交叉使用几种流行语言应该不难。

但是剩下的 0.5% 才是最有趣的。如果你想知道它是由什么组成的,奇怪的语言是一个很好的线索。

奇怪的语言并不是碰巧变得奇怪的。至少好的语言不是这样。好的语言的怪异之处通常意味着它们不仅仅是整合调用各种库函数。

举个具体的例子: Lisp 的宏。即使对于许多 Lisp 程序员来说,Lisp 宏看起来也很奇怪。它不仅和流行语言没有任何交集,而且就其本质而言,如果不把它变成 Lisp 的一种方言,就很难在一种语言中正确实现。宏,绝对是超越胶水编程技术的证据。例如,为了解决问题,首先是为这类问题编写一种语言,然后再用它来编写特定的应用程序。这只是宏可以做的事情的一个方面;也只是利用程序控制技术的一个方向,还有很多其他可以利用的地方有待探索。

所以,如果你想扩展你关于编程用途的了解,一种方法就是学习一些奇怪的语言。选择一种大多数程序员认为奇怪但其使用者大都很聪明的语言,然后关注这种语言和流行语言的交集之间的差异。你能用这种语言表达出其他语言难以表达的东西吗?在学习表达以前难以表达的事情的过程中,你可能也会学会如何思考以前难以思考的事情。

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


由于本人能力有限比较菜,所以大部分内容是结合机翻完成的,若内容有误,还请留言,我会在第一时间进行更正。

原文地址:http://www.paulgraham.com/weird.html

原文标题:Weird Languages

原文发表日期:2021年8月