1 本科毕业,直接读博 1960年,22岁的小高毕业了,获得数学学士学位。 但是他的本科学业如此出色,俄亥俄州凯斯理工学院教师们投票一致同意,同时授予他硕士学位! 于是,本科生小高直接去加州理工去读博士了! 人家小高完全不偏科,不但数学好,还妙笔生花,写得一手好文章,你说气人不气人。 他中学时就担任学校校报的编辑,大学更进一步,主编了《工程与科学评论》,获得了1959年国家最佳技术杂志奖。 小高不但作文好,计算机也玩得很溜,在那个很多人不知道计算机为何物的60年代,小高就为学校篮球队编写了一个程序,用于统计每个人在比赛中的投篮、篮板、防守、抢断、犯规等情况,然后给每个人都计算出得分,依次为依据挑选球员,派球员上场。 依靠这套程序,小高带领球队获得了全美大学生联赛的冠军,这可能是最早的大数据的应用案例吧。 这个篮球程序要在IBM650计算机上运行, IBM一看乐了,这可是宣传自家机器的好机会啊,立刻跑来拍了一个纪录片《电子教练》: 02 副业赚外快 1961年,博士一年级的小高一边读书,一边揽活赚外快。 不过他的副业可不是什么图书管理系统,学生信息系统这种烂大街的东西。 要玩就玩大的,他整了个Algol语言编译器,一下子赚了5000美元! 第二年暑假,他又写了一个编译器,这次赚了15000美元,比加州理工学院的助理教授工资都高。 这就太可怕了,60年代,会编程的都没几个,更别说编译器了。 有家创业公司找到他,想拉他入伙,给他开了10万美元的薪水(60年代的10万至少相当于现在的百万美元了吧?),但是被小高拒绝了。 因为小高真正的发现了自己的乐趣所在:在计算机算法中发现数学原理。 他不在乎收入,他将为自己的乐趣奋斗一生。 03 专注力 数学大神,计算机大神,写作高手,看起来已经非常完美了,但是和小高的一个品质比起来,这些技能都要退居次席。 这项极其宝贵的品质就是:专注力! 有了专注力,求伯君才能在深圳一间酒店中,夜以继日用汇编写出第一版WPS。 有了专注力,Bill Gates 才能24小时坐在电脑前,不眠不休,为牵牛星计算机编写Basic解释器。 有了专注力,Linus才能穿着睡衣,拉上窗帘,在自己的小黑屋中疯狂地编写Linux代码。 ...... 而小高早在小学时期就展示了这项非凡的能力。 当时,一家糖果公司举办了一场比赛,要求从Ziegler’s Giant Bar这个糖果名的字母中自由组合,看看能组成多少单词。 小高天生就对这种“离散”的数据感兴趣,他一看就来了劲儿,谎称生病,两周都没去学校,拿着一本破字典,不分昼夜,孜孜不倦地在其中寻找。 糖果公司预计冠军能找到2000左右的单词, 没想到小高的结果让他们大跌眼镜:居然找到了4700多个! 04 写一本编译器的书吧 万事俱备,只欠东风,小高的伟大事业即将启程。 他将去开创一个学科,去改变计算机的历史! Addison-Wesley以出版计算机领域的教科书出名,得知小高擅长写编译器以后,出版社的编辑坐不住了 :“高先生,你写编译器这么厉害,能不能写一本书,讲讲怎么实现编译器。” “这主意不错,我喜欢写作,你们Addison-Wesley是著名出版社,现在编译器的书又很匮乏,我们合作吧。” 小高迅速列了一个12章的提纲,摩拳擦掌,准备开始。 但是他很快发现,如果不先发展一套计算机编程的基本理论:算法分析,写编译器的书会磕磕碰碰的。 于是,他又找到了编辑:“那个,我觉得应该先写一本新书,把算法好好讲讲,叫《算法分析》,你觉得怎么样?” “这书名,恐怕没销量吧?” “那就叫《计算机程序设计艺术》!” 《计算机程序设计艺术》,现在大家知道小高是谁了,大名鼎鼎的高德纳啊。 前面为了留一点悬念,称高爷爷为小高,实在是罪过。 高德纳本来只想写一本,写着写着发现,一本根本不够,需要7卷才能包含所有的主题! Addison-Wesley 也是豁了出去,那就出吧! 卷1:基本算法 卷2:随机数和算法 卷3:排序和搜索 卷4:组合算法 卷5:词法扫描和解析 卷6:上下文无关语言 卷7:编译器技术 可以看出从第5卷开始,才算进入真正的编译器相关的知识 这么庞大的工程,真是要命啊。 如果是普通人,估计也就算了,但是高德纳再次发挥了用糖果名拼写单词的优秀品质,准备用一生时间和它死磕到底。 05 用汇编写算法 既然要写编译器相关的书,那必然要涉及到机器,可是计算机发展一日千里,高德纳也无法控制,这怎么办? 答案是自己“造”一个假想的虚拟机器 : MIX。 高德纳为MIX设计了汇编指令,为它还写了一个模拟器,这样就可以在上面执行程序了。 《计算机程序设计艺术》中的实例程序都用MIX的汇编来实现,这对于高德纳这样的大神来说非常简单。 对普通人来说,尤其是看惯了Python, Java,C等高级语言的同学来说,算法用汇编来写,这不要了命吗? MIX汇编就像一个怪兽,守护在《计算机程序设计艺术》的大门前:“想进入大门,必须经过我这一关!” 这可能就是很多人买了书但从来不读的重要原因! 06 计算机程序设计艺术 1968年,30岁的高纳德出版了《计算机程序设计艺术》第一卷,立刻成为经典,引起了学术界和工业界的注意,产生了巨大的影响。 完美主义者高纳德说:“ 找出一个错误,我给你2.56美元,现在书刚出版,找Bug还比较容易,也许你能快速收回买书的成本。” 真的有人找到了错误,并且收到了高纳德的支票,不过,没人舍得去兑换,通常都是装裱起来,留作纪念。 1995年,Bill Gate在采访中建议,任何认为自己是优秀程序员的人都应该读一下第一卷。 他说: “我当时花了好几个月读这本书,真是需要很强的自律才行,如果你读完了,请给我邮寄一份简历。” 1968年,30岁的高纳德成为斯坦福大学的终身教授,接下来,将会他是最富有成效的5年。 1969年,《计算机程序设计艺术》第二卷出版, 1973年第三卷出版。 1974年美国计算机学会就“迫不及待”的把计算机界的最高奖——图灵奖——授予高纳德,表彰他对算法分析和编程语言设计的重大贡献。 这一年高纳德仅仅36岁 !只靠一套还没有完成的书就获得ACM图灵奖,不但是前无古人,估计也后无来者了。 为什么这本书这么牛呢? 因为高纳德首次把算法复杂度做了量化衡量,提出了决定算法快慢的决定性因素,奠定了计算机算法的基础,成为全世界计算机领域内的标准。 这套书售价高达几百美元,但是却在全世界卖了超过百万套。 它是计算机编程界当之无愧的圣经。 1999年,《美国科学家》杂志曾将《计算机程序设计艺术》与爱因斯坦的《相对论》、狄拉克的《量子力学》,维纳的《控制论》等书并列为20世纪最重要的12本科学类专著,可见此书的历史地位。 07 TEX排版系统 然而令人大跌眼镜的是,拿到图灵奖以后,高纳德居然宣布暂停写作,因为他对于新书的排版非常不满:文字、符号和排列方式实在是难看, 破坏了书的美感! 完美主义者高纳德决定暂停写作,切换身份,成为一名程序员,开发一个强大的计算机排版系统。 没想到这一停就是将近九年。 最终的成果是开源排版软件TEX(可能是最早的开源项目了)和 一种字体MetaFont。 TEX和MetaFont改变了出版业, 在全世界有100多万的拥趸。许多人认为TEX计算机排版系统上的工作是自古腾堡以来对排版的最大贡献。 TEX的版本号也很有意思,不是数字(3.0, 3.1, 3.2....) ,也不是年份(Windows 95, 98, 2000...)。 而是不断逼近的圆周率 (3.1415926...) ,这从侧面反映了软件几近完美,不需要做改进了。 高纳德说:“最后一次升级是(于我过世后)将版本数改为 π,那时任何余下的漏洞将被看作程序的功能! 高纳德想刻意发明排版软件吗? 不!他只想让自己的书看起来更加漂亮,但是他偶然为之的工作却能抵得上普通人为之奋斗一辈子,这就是真正的大神吧! 08 硅谷最牛程序员 在IT圈流传着这么一个笑话: 有一天,Richard M. Stallman, Linus Torvalds, 和高纳德 三人坐在一起聊谁对计算机世界的影响最大。 Stallman :上帝说是我开发了世界上最好的编辑器Emacs! Linus : 嗯,上帝说是我开发了世界上最好的操作系统! 高纳德:等等,我从来没有这么说过! 面向对象的发明人Alan Kay这么说过: 60年代末,当我在斯坦福从事AI项目时,每个感恩节我们都会和硅谷的编程高手们举行编程竞赛,McCarthy(人工智能之父)出题, 奖品是好像是一只火鸡。 高德纳参与的那一年,把我们都给虐了, 他的代码无论是程序执行和算法执行都是最快的,并且他用的是一台最慢的批处理机器! 我们问高德纳:“你是怎么做到的?” 他说:“当我学习编程时,如果每天有五分钟的时间使用机器,就高兴得不得了, 所以必须要让程序一次运行成功,没有错误,算法设计达到最佳。” 09 未来? 1993年,高德纳提前斯坦福退休,住到了学校周边的一个山上,开始过一种隐士生活。 他觉得电子邮件噪声太多(垃圾邮件受害者?),不再使用了,由秘书代收,每年会花费几周时间阅读订阅的期刊。 他限制了自己的公开活动,每个月他会从山上下来,在斯坦福大学做一场“计算机思考”的讲座。 这一切的目的,都是为了用余生去完成《计算机程序设计艺术》。 不过相比前3卷,后面的进展确实太慢了,第4卷的第一部4A出版的时候,已经过去将近40年了。 后面还计划有4B ,4C,4D, 还有第5、6、7卷。 今天高德纳已经83岁了,真担心他写不完...... (完)
|
|
来自: 昵称27492377 > 《编程语言、程序》