清晰-起源故事

2020-08-12 05:51:07

我已经写过关于Lucid起源的文章,但那是一篇枯燥的、技术性的、不完整的帖子。这是真实的故事,所有的戏剧性和激情,胜利的兴奋,失败的痛苦。

我近50年前来到滑铁卢,这是我的第一份学术工作。在年轻的计算机科学系担任助理教授。(在一份“确定期限”的合同上,我最终会发现它的意思)。

我是乘坐豪华轿车到达的-就像每个从多伦多机场进来的人一样。我是从加利福尼亚州的伯克利飞过来的,我在那里当了五年田园诗般的数学研究生。孩子,那些日子已经过去了,谈谈文化冲击吧。

不过,我很快就适应了,很快就结识了很多在计算机科学和纯数学方面的好朋友。我还和他们中的一些人保持联系。

我对计算机科学知之甚少,只懂汇编和FORTRAN编程,这两方面我都很在行。但我有主意。

我非常幸运,因为我的许多新同事都知道很多关于计算机科学的知识,更重要的是,他们很乐意分享他们的知识。其中尤以犹他州的阿尔·戴维斯(Al Davis)为例,他向我讲述了这个角色埃德格尔·迪克斯特拉(Edsger Dijkstra)和这个激进的“结构化编程”理念。

我读了迪克斯特拉的“Goto被认为是有害的”。我一下子就皈依了。

Al和我写了一篇关于我们发明(但没有实现)的结构化语言DPL的论文(这是我的第一篇论文)。它有一些有趣的想法,包括变量绑定操作符。

我越来越多地考虑结构化编程,并在我的观点中变得更加激进,最终得出结论,赋值语句本身是“有害的”(Al在这一点上退出了)。

与此同时,我几乎没有意识到,我正成为司法部权力机构的一个巨大失望。当他们雇用我的时候,他们认为我会从事计算复杂性方面的工作,这是一件大事(现在仍然是)。事实上,当我在伯克利分校时,史蒂夫·库克还是一名年轻的助理教授。他给我上了一门关于复杂性的课程。

不幸的是(对我和复杂性而言)我从来没有接受过它。这不是库克的错--他上了一堂很好的课。我只是不感兴趣。真的很遗憾(至少在事业上),因为我本来可以在这个领域的底层拥有巨大的未来。但在我看来,低效并不是软件危机的原因,这是正确的。结构化编程似乎更切合实际,我的观点也变得更加激进。

特别值得一提的是,像i=i+1这样的语句真的让我很困扰,因为变量i似乎在所谓的方程式的两边表示不同的东西。这冒犯了我的数学敏感度,也使得对这一陈述的推理变得困难。

我想出了一个解决方案,那就是在这些伪方程前面加上关键字First和Next。因此,如果i最初为1,并且在我们编写的每次迭代中加1。

我不知道为什么我认为这能解决任何问题。请注意,最初关键字应用于整个赋值,就好像它们是用括号括起来的。

不管怎么说,有一天我坐在我那红色装饰、没有窗户的办公室里,…。是的,无窗的。滑铁卢的内廊办公室没有窗户。即使对助理教授来说也是如此。你得赚个窗子,我在那里的三年里从来没赚过。此外,地位较低的办公室有红色的门,而较有声望的办公室有智能的黑门。关于学术界,我有很多东西要学。

不管怎么说,我在我那闷热的办公室里,在我地位低下的红色门后面,看着这些线条,当我用新的眼光看到它们的时候。就好像它们是这样放在括号里的:

我突然想到这可能真的解决了一些问题。第二个不再声称我是自己,我加一,它说叫下一个(I)的东西是i+1,作为一个等式,它不再意味着0=1。

我非常兴奋,离开了狭小的办公室,匆匆地沿着“纯数学”走廊走去。(我的办公室在纯数学区。我从未被调到计算机科学领域)。

我进入了计算机科学区,直接走进了埃德·阿什克罗夫特(Ed Ashcroft)黑色装饰的办公室。埃德(我和他交了一段时间的朋友)欢迎我进来,让我坐在他窗前灿烂的自然光线下。当我遮住眼睛躲避不习惯的光线时,我解释了我的发现。您可以使用一致的方程式定义迭代!

艾德觉得这很有趣,他问我“下一步(我)”到底是什么。我回答说…。错误…。这是“我的下一个价值”。这似乎并不能让他满意,他解释说,他已经下定决心,不再研究没有正式语义的编程语言思想。

语义学?我甚至不确定我以前听过这个词(在计算机科学的上下文中)。显然是在逻辑上)。艾德鼓励我在这方面下功夫。

回到我的扫帚间,我思索着“下一步”的含义。它看起来像是一个函数。表达式NEXT(NEXT(I))有意义,它是I+2。因为函数NEXT是线性的,显然NEXT(I+J)等于NEXT(I)+NEXT(J),并且NEXT(2*I)一定是2*NEXT(I)。

另一方面,NEXT(0)肯定是0,因为0不变。NEXT(1)必须为1,NEXT(2)必须为2,依此类推。通常,这意味着下一步是身份,所以下一步是我。

终于,终于明白了,我既不是0,…,也不是1,也不是2。它不是一个常数,它是一个随时间变化的变量。它包含了许多人。

我把这些方程式写在手边的一张档案卡上(我把它保存了很多年)。我抓起卡片,击落了纯数学走廊,穿过小大厅,进入计算机科学区,敲了敲艾德的黑门,坐在他窗户的强光下眨着眼睛。

“在我看来,这是语义学的,”他说。“我们开始工作吧!”或者大意是这样的话。

那时我已经知道“确定的条件”是什么意思了。两年后就不能续签,没有续签的权利。我不是终身教职。

然而,他们慷慨地重新考虑了我的续约事宜,无论如何,…。并拒绝了它。但是Pure Math给了我一个为期一年的博士后学位,我对此表示感谢。

具有讽刺意味的是,正是在Pure Math的第三年,Ed和我开始研究一位Pure Math朋友建议我们称之为“Lucid”的东西。

艾德是个很棒的合作者。他在技术上甚至比我更严格(以我的逻辑背景),而且也很有创造力。有两个例子可以说明这一点。

有一次,我想出了fby运算符,以便上面的两个第一个/下一个方程式可以组合为。

因此,每个程序都可以定义:每个变量都有一个唯一的定义方程式。Ed指出,每个这样的程序都有一个唯一的最小不动点,我们可以将其作为程序的含义(更多的语义)。我原以为我们需要某种语法约束,这让我松了一口气。

还有一次,我想要编写一个冒泡排序,但我为缺少数组而感到遗憾。艾德指出我们不需要他们。我们只需将未排序的流通过一系列气泡过滤器,直到它们有序为止。(艾尔·戴维斯向我们灌输了数据流)。

最后,我钦佩他的职业道德。甚至在我们弄清楚之前,他就让我们开始写一篇关于我们正在研究的东西的论文。然后,当研究完成后,论文也就完成了。我应该用我自己的工作来做这件事。

在我被明确解雇后,我搬到了英国的沃里克,在那里,令人惊讶的是,我立即得到了一间自己的办公室,有一扇窗户--我相信--还有一扇黑门。