我为什么不上知乎王垠 王垠:我为什么不再研究编程语言(PL)

2017-11-17
字体:
浏览:
文章简介:我不做程序语言(PL)的工作已经半年了.在这半年里,我变得快乐了很多,对世界也有了新的观点.现在我想来讲一讲,我为什么不想再做 PL 的工作和研究.我只希望这些观点可以给正在做 PL,或者考虑进入这个领域的人们,作为一份参考.学校里的 PL 人PL 看似计算机科学最精髓的部分,事实确实也是这样的.没有任何一个其它领域,可以让你对程序的本质形成如此深入的领悟,然而这并不等于你就应该进入 PL 的博士班.这是为什么呢?炒冷饭PL 这个领域几十年来,已经发展到了非常成熟的阶段.这里面的问题,要么在 2

我不做程序语言(PL)的工作已经半年了。在这半年里,我变得快乐了很多,对世界也有了新的观点。现在我想来讲一讲,我为什么不想再做 PL 的工作和研究。我只希望这些观点可以给正在做 PL,或者考虑进入这个领域的人们,作为一份参考。

学校里的 PL 人

PL 看似计算机科学最精髓的部分,事实确实也是这样的。没有任何一个其它领域,可以让你对程序的本质形成如此深入的领悟,然而这并不等于你就应该进入 PL 的博士班。这是为什么呢?

炒冷饭

PL 这个领域几十年来,已经发展到了非常成熟的阶段。这里面的问题,要么在 20 年前已经被人解决掉了,要么就是类似“停机问题”一样,不可能解决的问题。然而,博士毕业却要求你发表“创新”的论文,那怎么办呢?于是你就只有扯淡,把别人已经解决的问题换个名字,或者制造一些看似新鲜却不管用的概念,在大会上煞有介事的宣讲。俗话说就是“炒冷饭”。

最开头进入这个领域的时候,你可能不觉得是这样,因为似乎有那么多的东西可以学习,那么多的大牛可以瞻仰,那么多的新鲜名词,什么“lambda calculus”啊,“语义”啊,各种各样的“类型系统”啊,这样那样的“逻辑”…… 可是时间久了,看透了,你就发现一些这个圈子里的规律。

崇拜古人

几乎每篇 PL 领域的论文,里面必有一页弯弯曲曲,让人看花眼的逻辑公式。程序语言的论文,不是用程序来描述,而是用一些老古董的逻辑符号,像这样:

绝大部分 PL 领域的专家们,似乎都酷爱逻辑符号,视逻辑学家高人一等。这种崇尚古人的倾向,使得 PL 专家们看不见这些符号背后,类似电路一样的直觉。他们看不见逻辑学的历史局限,所以他们也许能够发展和扩充一个理论,却无法创造一个新的。

说到古人,却并不是所有古人都这么晦涩。如果你考古一下就会发现,其实现代逻辑学的鼻祖 Gottlob Frege 最初的论文里,是没有这些稀奇古怪的符号的。他整篇论文都在画图,一些像电路一样的东西。比如下图,就是 Frege 的创始论文《Begriffsschrift》里最复杂的“公式”之一:

你可以把这里的每根线理解成一根电线。图 1 里那些诡异的逻辑符号,都是一些好事的后人(比如 Gentzen)加进去的,最后搞得乌七八糟,失去了 Frege 理论的简单性。所以 PL 专家们虽然崇尚古人,却没有发现大部分古人,其实并没能获得鼻祖 Frege 的真传。

如果你看透了那些公式,自己动手实现过各种解释器,就会发现 PL 论文里的那些公式,其实相当于解释器的代码,只不过是用一种叫做“XX 逻辑”的晦涩的语言写出来的。逻辑,其实本质上是一种相当落伍的程序语言。

如果你精通解释器的代码,也许就会发现,这些公式其实用非常蹩脚的方式,实现了哈希表等数据结构。逻辑语言只运行于逻辑学家的脑子里面,用它写出的代码一样可能有 bug,而且由于这语言如此障眼难读,而且没有 debugger,所以 bug 非常难发现。逻辑学家们成天为自己的设计失误和 bug 伤透了脑筋,PL 专家们却认为他们具有数学的美感,是比自己聪明的高人