当人们说在他们的经验中,所有的编程语言基本上是等同的,他们所做的声明不是关于语言,而是关于他们所做的编程种类。
99.5%的编程是由对库函数的调用粘连而成的。所有流行的语言在这方面都同样出色。因此,一个人可以很容易地在流行的编程语言的交叉点上度过他的整个职业生涯。
但是另外的0.5%的编程是不成比例的有趣。如果你想了解它由什么组成,奇怪的语言的怪异性是一个很好的线索,可以遵循。
奇怪的语言并不是偶然的。至少不是那些好的语言。好的语言的怪异性通常意味着存在某种形式的编程,而不仅仅是通常的库调用的粘连。
一个具体的例子:Lisp宏。即使对许多Lisp程序员来说,Lisp宏也显得很奇怪。它们不仅不在流行语言的交叉点上,而且就其性质而言,如果不把它变成Lisp的一种方言,就很难在一种语言中正确实现。而宏绝对是超越胶水编程的技术的证据。例如,通过首先为该类型的问题编写一种语言,然后在其中编写你的具体应用来解决问题。这也不是你能用宏做的全部;它只是程序操纵技术空间中的一个区域,即使是现在也远未被完全探索。
因此,如果你想扩大你对编程的概念,一个方法就是学习奇怪的语言。挑选一种大多数程序员认为很奇怪但其中位用户却很聪明的语言,然后专注于这种语言和流行语言的交集之间的差异。你可以用这种语言说什么,而用其他语言说是不可能的,不方便的?在学习如何说你以前不能说的东西的过程中,你可能会学习如何去思考你以前不能思考的东西。
感谢Trevor Blackwell、Patrick Collison、Daniel Gackle、Amjad Masad和Robert Morris阅读本文的草稿。
原文地址:http://paulgraham.com/weird.html
保罗·格雷厄姆专栏