将Walter Bright带往写一门语言、现在排在前20名的道路是从好奇开始的------也有侮辱。
我喜欢弄清楚事情是如何运作的,并从非常早期的阶段设计它们(我爱Tom Swift系列的书【注1】)。早期,我知道我自己在设计火车头或施耐德杯赛车。我的学位是机械工程。但是机械工程让我沮丧,因为建造任何东西都有昂贵的代价,以及我的糟糕至极的建造水平。
在另一方面,编程,我可以建造能想象到的最错综复杂的机器,零成本,只需要计算机访问。和很多程序员一样,我开始开发游戏。开发游戏的动机是某种上帝情节——你能够创造完整的、奴隶般地遵守你规则的一个世界。在游戏《Empire》里,我不仅仅创造了这样的世界,而且花了无数小时规划如何让计算机更好地操作敌方军队。甚至到了今天,我仍然在考虑优化的方法。
然而,问题在于计算机策略对计算机性能的渴求远远超过了可用机器的能力,因此我对编译器如何优化代码产生了兴趣。编译器好像喜欢彻底的、充满魔力的设备,它把源代码转化成机器码。这个魔术究竟如何实现的?在《BYTE》杂志把源代码发布到Tiny Pascal之前,这是宇宙中非常神秘的东西。我研究了程序的每一行代码;在掌握之后,我觉得我拿到了通往圣殿的口令。
过了几年。在80年代早期,我发现我自己成为了面向MS-DOS开发软件的开发小组成员。我们都用C,因为它是唯一的高级语言,我们发现它事实上能够在PC上运行。其它语言实现令人难以置信地糟糕。甚至C编译器也是让人讨厌的,但至少它们是可用的。它们产生的代码非常可怕,不存在优化。我产生了一个想法,我自己能够写一个更好的C编译器。
我向一个同事透漏了这个想法,他建议我和他,还有一个当地C的大牛一起吃午餐,该大牛将给我如何开展的一些建议。我们过去了,我的朋友向这位大牛介绍了我的宏大目标。他鄙视我的回答一直刻在我的脑子里,“你到底算老几,你居然认为你能写一个C编译器?”
现在想想我不得不感谢他,因为我发现 向他炫耀的欲望成为了最有力的动机。我开始实现C编译器,也就是广为人知的Datalight C。感谢我在优化上的兴趣,它成为PC上第一个拥有数据流(data-flow)的优化编译器。这样一个概念当时太新了,以致于在PC杂志基准陷入了麻烦,因为编译器认为基准什么也没有做而删除了所有的废弃代码——记者误认为我的编译器有问题,或作假,Datalight C得到了一个负面评论。(当然,这使我更加疯狂,那个年代还没有随处可用的互联网,我无法发表辩驳文章。)
后来被转化为Zortech C。那时候,PC上已经有很多其他的C编译器了(我想那时候有30个)。我调查一番找到了竞争优势,在书店发现了Bjarne Stroustrup的书。我想,“嗯,加一堆新的关键词,数月之内,我将有一个C++编译器!”可能是看轻了那个编程的世纪。如果我知道我面临什么,或许我会相信那个说我做不到的人。
不管如何,80年代末很多人正工作在C的继任者上。
你甚至在那时的新闻组里找到引用叫做“D”的项目。由于各种原因,包括Zortech的一款便宜的C++编译器准备登陆最流行的平台,C++埋葬了其它的语言,并统治了90年代的编程;我深受鼓舞。
随着时间的推移(那时候是90年代),我也写了生成原生代码的Java编译器和一个JavaScript编译器/解释器。这些产品不够成功。我注意到,忙于我需要的东西...