黑客和普通程序员哪个好(程序员厉害还是黑客厉害)
简评:据说不知道这些大神的程序员不是真正的程序员,这些大神有的可以凭借一本未完成的书获得ACM图灵奖,有的微软开出百万年薪盖茨亲自来挖人,更甚者用自己发明的语言重新开发一套操作系统。这些大神不仅极大地促进了计算机行业的发展和软件技术的革新,而且也让我们这些后生的程序员能够在他们的技术铺垫上,利用他们开发的平台工具或是语言更好地开发软件。所以作为程序员的我们在学习技术的同时也应该多去了解这些大神背后的故事,在敬仰之余也去学习下他们不断进取,富有开创性的精神。
D.E Knuth(高纳德. 克努特)
他最为人知的工作就是经典巨著《计算机程序设计的艺术》, 这本书第一卷《基本算法》 于1968年推出,可真正能读完并且真正读懂的人并不多,比尔.盖茨在1995年接受一次采访时说,“如果你认为你是一名真正优秀的程序员,就去读第一卷,...... 如果你能读懂整套书的话,请给我发一份你的简历。”在大学时从图书馆借了这本书,试图啃下来, 结果开了个头就看不下去了, 惭愧!
1973年,这部刚出到第三卷的书(计划写七卷)已被计算机界视为“神作”, 1974年美国计算机学会就“迫不及待”的把计算机界的最高奖图灵奖授予克努特- 此时高纳德仅仅36岁 !只靠一套还没有完成的书就获得ACM图灵奖,不但是前无古人,估计也后无来者了。然而令人大跌眼镜的是,拿到图灵奖以后,高纳德宣布暂停写作,理由竟然是现有的计算机排版系统太差,破坏了书的美感 ! 然后单枪匹马开发出了革命性的排版系统TEX ,TEX至今仍是全球学术排版的不二之选。
TEX 功能强大,几乎无懈可击,其版本号也很有意思,不是数字(3.0, 3.1, 3.2....) 也不是年份(Windows 95, 98, 2000...),而是不断逼近的圆周率 (3.1415926...) ,这从侧面反映了软件几近完美,不需要做改进了。(最新消息 : 高德纳曾表示“最后一次升级是(于我过世后)将版本数改为 π,那时任何余下的漏洞将被看作程序的功能!)有趣的是高纳德 为此还设置了奖金,谁能从TEX 发现第一个Bug ,奖励2.56美元,第二个5.12 美元,第三个10.24美元, 作为算法的大师,不可能不知道指数增长的可怕性,但至今为止他也没有为此付了多少钱。那些找到Bug 的人收到高纳德签名的支票以后也不去兑换, 而是作为珍品收藏了 :-)
《计算机程序设计的艺术》展示了高纳德深厚的理论功底和高超的数学知识,TEX 则体现了一个超级程序员的能力,在计算机的历史上,极少有人能把超强理论和超一流的实践能力集于一身,实在是令人叹而观止。
感谢上帝,给我们送来了高纳德 。
展开全文
来一张标准照
再来一张获奖照, 哪个是高纳德?
Unix和C语言之父KenThompson和Dennis Ritchie
两个大牛 肯·汤普逊(Kenneth Lane Thompson)、丹尼斯·里奇(Dennis MacAlistair Ritchie),Unix 和C语言之父1983年ACM 图灵奖的获得者。理由是他们“研究发展了通用的操作系统理论,尤其是实现了UNIX操作系统”。
注意后半句,搞计算机的多少都会有一点OS情节,总是梦想是自己也能做一个OS。可对大多数人来说,这是梦想而已,因为现代的操作系统 太复杂,太庞大,你即使精通理论,实现的工作量远远超出了一个人的能力范围。但是两位老兄竟然自己卷起袖子,带头编写了一个千古流芳的操作系统(Unix 的重要性和影响力这里就不用啰嗦了,反正它和它的变种们已经统治了服务器端和手机端),我们看看第一版是怎么出炉的:
1968年 ,两人被贝尔实验室派到MIT去参加一个ARPA出资的项目,开发一个分时的操作系统MULTICS (支持多任务并发运行,这在60年代可是很稀罕的), 在项目完成前不久,贝尔因为开发费用太大,而开发成功希望不大而把他们调回贝尔,两人深感沮丧。回到贝尔以后,面对实验室落后的仍以批处理工作的计算机环境,他们非常怀念MULTICS,决定自己动手改造,创造一个“舒适的,愉快的工作环境”。但是贝尔实验室因为退出了MULTICS , 更不会出钱来支持他们。
1969 年 万般无奈的Thomason 在库房里发现了一个弃之不用的PDP-7,大喜过望,立刻开始实施他们的计划。但是PDP-7实在是老掉牙了, Thomason 又借口帮助公司开发一个字处理系统来处理专利申请书,冠冕堂皇的申请到一个新的,设备完善的PDP-11 ,这才使开发工作顺利开展。
他们以极大的热情和极高的效率投入工作,使用汇编语言,开发基本上以每个月一个模块(内核,文件系统,内存管理,I/O。。。) 的速度推进 !请注意关键字,1. 汇编语言,2. 每月一个模块。每次看到这里,不由的倒吸一口凉气, 这实在是一个细思极恐的事情。
学过汇编的都知道,汇编只不过是二进制语言的一些助记符而已,连最基本的函数封装都没有,想做个循环必须用goto ,记得大学时学汇编,写个简单的读取键盘输入,在屏幕上回显都很费劲。可是这两位老兄竟然用汇编实现了操作系统, 并且一个月就能搞定内核,再用一个月就能搞定文件系统,你能想象得到他们到底有多牛吗?有人可能要问了,为什么不用C 语言呢?答案很简单,C语言这时候还没有被他们俩发明。
Unix 在PDP-11上实现以后,两人很快就发现移植性很差,这是当然,汇编语言嘛,高度依赖硬件。他们试图用一个高级语言来重写,先选择了BCPL(简称B 语言) ,然后又尝试PASCAL ,发现都不行,它们都不太贴近硬件操作。于是两个人(主要是Dennis Ritchie)决定自己开发一套新的语言:这就是大名鼎鼎的 C 语言。
C 语法简洁,对计算机模型做了良好的抽象,能够直接对内存操作,并且保持了很好的移植性。C的语法风格深 深地影响到了他的那些著名的后辈们 C++, Java , C# ...... 都采用了大括号作为方法体的开始和结束,都使用分号来分开statement , 至于if .. else , while , switch 等基本控制语句几乎一样, 甚至连注释的风格都差不多。 由此可见C 的影响力和历史地位。
Dennis Ritchie 用C 语言重写了Unix ,"重写"说起来简单,实际上并不是简单的汇编到C语言的翻译,这里边包含了很多的发明和创造。重写过的Unix 很快就流行起来,40 多年过去了,虽然出现了很多的类Unix 系统,例如Linux, 但是他们都继承了Unix 中的基本思想,并且发扬光大。
关于Unix 有个很有趣的故事,传说KenThompson在贝尔实验室,大摇大摆的走到任何一台Unix机器前,输入自己的用户名和密码,就能以root的方式登 录! 贝尔实验室人才济济,另外一些大牛发誓要把这个漏洞找出来,他们通读了Unix的C源码,终于找到了登录的后门,清理后门以后编译Unix运行,可是Thompson 还是能够登录进去。
有人觉得可能是编译器中有问题,在编译Unix的时候植入了后门,于是他们又用C语言重新写了一个编译器,用新的编译器再次编译了Unix,这下总算天下太平了吧。可是仍然不管用,Thompson 依然可以用root登录,真是让人崩溃 !后来Thompson 本人解开了秘密,是第一个C 语言编译器有问题,这个编译器在编译Unix源码的时候,当然会植入后门,这还不够,更牛的是,如果你用C 语言写了一个新编译器,肯定也需要编译成二进制代码啊,用什么来编译,只有用Thompson写的那第一个编译器来编译,好了,你写的这个编译器就会被污染了,你的编译器再去编译Unix , 也会植入后门 :-)
KenThompson 和 Dennis Ritchie 绝对是两位超级程序员, Thompson 后来加入Google ,和Rob Pike (另外一个大牛)等人一起创造了Go 语言, 在这里大胆的预测一下,Go 语言将来在系统编程领域会替代C 语言。 Dennis Ritchie 2011年去世,享年70岁。
来一张获奖照吧,两个大胡子,经常分不清谁是谁,右边那位大家肯定都认得,克林顿同学给他们颁发国家技术奖
安德斯·海尔斯伯格(Anders Hejlsberg)
其实安德斯还真的和图灵奖有那么一点点联系,故事需要从Pascal 这门曾经大红大紫的语言说起。
凡是学过一点计算机知识的人大概都知道 程序=数据机构+算法 这一著名公式,提出这一公式的就是1984年的图灵奖获得者尼克罗斯. 沃思(Niklaus Wirth)。沃思还提出了结构化程序设计概念,我们现在可能觉得是司空见惯了, 但是在1971年“自顶向下,逐步求精“的方法的确改变了人们对程序设计的思维方式,在程序设计中引起了一场革命,成为程序开发的标准方法,尤其是在后来的软件工程中获得了广泛的应用。
当然我们这里提到沃思还是因为他是Pascal 之父, 上个世纪60年代沃思在苏黎世工学院任教(注意:这是一个牛校,他的毕业生和教授中诞生了21个诺贝尔奖获得者,包括大名鼎鼎的爱因斯坦)期间发明了 Pascal ,Pascal 语言奠定了结构化程序设计中常用的数据结构和控制结构,为程序员提供了极大的方便和灵活性,在C 诞生以前,是最受欢迎的语言。
有趣的是沃思发明Pascal最初只是想用来教学,并没有想到商业应用,他的一个学生Phillipe Kahn 从苏黎世工学院毕业以后,在美国加州创建了一个后来大红大紫的公司: Borland ,Borland创立之初,便注意到了Anders Hejlsberg编写的一个Pascal 编译器,很快雇佣了他,把编译器买了过来,更名为 Turbo Pascal 。从此安德斯登上了软件开发的历史舞台。
Anders出生于丹麦, 作为北欧的一个小国,像丹麦,荷兰,芬兰,瑞典一样,虽然国土面积很小,人口很少,却在近现代的历史上展示了非凡的创造力, 有时间专门写一篇文章:聊聊北欧的小国
Anders 大学也没有毕业,基本上是自学成才, 可以这么说,他对编译器和开发语言的理解全世界没几个人能超越(李维语),他开发的Turbo Pascal 在1983年一经推出,就以闪电般的编译速度震惊了世界,在全世界狂卖出了100多万个Copy,不要小看100多万这个数字,80年代初微机刚刚开始起 步,1982年IBM 才公布IBM兼容机的标准,当时的 程序员非常少,100多万个Copy几乎占据了绝大部分市场。由于每个Copy定价49.95美金,Philipe Kahn和 Anders 都变成了百万富翁。
有时觉得实现编译器是一件非常难的事情,所以对能写编译器的人总是心怀敬意。安德斯竟然用汇编语言实现了编译器,并且能在一个极小的内存中以极快的速度执行,考虑到上个世纪80年代初的硬件,真是非常了不起。
上一张图吧,怀旧一下 :-)
Turbo Pascal 和后来Borland 开发的Turbo C 在UI上极其相似,连菜单项的次序File, Edit,Search ,Run... 都一样,看着这张DOS下的IDE,真是感慨啊。
历史的车轮滚滚向前,在IT界无论你曾经多么成功,如果不改变的话很快就会被抛在后面,Turbo Pascal也不例外。随着面向对象和Window 编程的兴起,Turbo Pascal也到了改变的时刻。做为Lead Architect , 安德斯带领团队开始从DOS转向Window 平台, 并且在编译器中开始支持Object Pascal :一种Pascal的扩展,实现了面向对象的特性。但是仅仅在Window平台上实现面向对象的Pascal是远远不够的,想让开发人员迅速的开发应用程序,还必须有一个可视化的应用程序框架和类库,这就是Borland 的VCL .终于在1995年,Borland推出了Window平台上的大名鼎鼎的开发工具: Delphi .
“真正的程序员用VC,聪明的程序员用Delphi”,这句话是对Delphi最经典、最实在的描述 。 Delphi之所以如此成功,成为VB Killer , 主要有下面几个原因:
据说Delphi这个名称有个很有趣的来历, 当时市面上Oracle数据库最流行,Oracle 的意思是神谕,先知(还记得黑客帝国中的那个先知吗)?
Delphi意思是神庙,圣殿, Borland 的工程师把产品叫做Delphi,其实是想体现能和Oracle连接的想法: If you want to talk to Oracle, please go to Delphi.
很多中国程序员都有Delphi情结, 也出现了很多Delphi高手,比如写了《Delphi源码分析》和《大道至简》的周爱民 ,还有现任微信的产品经理张小龙,他1997年用Delphi编写了著名的邮件客户端软件Foxmail 。
1996年,Anders Hejlsberg在Delphi3发布前离开了Borland, 这里有很多原因,包括管理层的变化, 修改Pascal编译器的争执, 更重要的是据Borland内部人讲,Anders认为自己不再是“不可缺少的人”。 当然也和微软展开的大规模挖角行动有关,得知Anders 在Borland “不开心”以后, Microsoft直接派遣加长型的大轿车到Borland大门口接Anders吃饭,第一次Microsoft开出了年薪百万美元以上的条件, 但是Borland也采用了加薪的手段。
Microsoft并未因此灰心放弃,很快就再次用大轿车接Anders。这次Microsoft提出了年薪两百万美元以上的条件, Borland 挽留Anders 的条件是Delphi销售的提成, 但实际上Anders 早已是百万富翁,更注重的是自由的发展空间,所以当Microsoft决定祭出最后的王牌,由Bill Gates亲自邀约Anders聚餐,许诺300万年薪和股票,以及一个小组和充分的资源让他尽情发挥,Anders没有办法拒绝了。(本段选自李维的书籍《Borland 传奇》)
1996年的微软正是如日中天,刚刚发布革命性的Window 95,其轰动程度不亚于现在Apple发行iPhone,微软当年对程序员的吸引力,就像如今的Google,facebook那样。
话题扯的远一点,微软财大气粗,在挖人上向来“不择手段” ,非常有气魄,比如当年微软想大力发展SQL Server , 准备把事务处理领域的大牛Jim Gray(1998年图灵奖获得者)挖过来的时候,充分的体现了这一点。Jim Gray不喜欢西雅图阴雨连绵的天气,只想呆在阳光充足的旧金山, Bill Gates就说, 那我们就在旧金山给他自己建立一个研究所吧,就这样Jim 加入了微软。
Delphi 在Anders 离开以后继续前行,但是整个IT业界开始发生翻天覆地的变化,互联网和Java开始兴起, 软件系统架构开始从C/S向B/S演进, 软件业的竞争开始从开发工具转向平台和中间件(J2EE, .Net, Weblogic, Websphere.....), 而Borland主业仍然是开发工具,虽然后来推出了JBuilder, C#Builder等风靡一时的产品,甚至收购Together 完成了对建模,架构的支持,但总归是抵不过IT的潮流,慢慢的变成了一个二流公司, 再也无法和Microsoft 等公司竞争。
上一张Dephi的截图
而Anders在微软如鱼得水,似乎踩准了IT发展的步点,再次登上了人生的又一个巅峰。Anders 首先开发了Visual J++ , 在微软的Visual Studio中,相比VC, VB, 这是一个不引人瞩目又非常短命的产品,原因很简单:微软想在Java上分一杯羹,但是做的太过分了,被Sun(可怜的Sun 现在已经被Oracle收购了)告上了法庭。当然结局是微软打败了官司。
J++ 是一种语言,和Java 的语法兼容, 但是以微软的野心,VJ++肯定不仅仅是新一个IDE的开发工具,就像JBuilder,Eclipse 那样, 微软肯定要把它绑定在Windows平台上来获取最大的利益。于是微软就对Java进行了扩展,增加了Delegate, Event, 还提供了一些直接调用Windows API的功能,这样Java在Windows上运行的效率肯定很高,但是就破坏了Write once, run everywhere 的特性。Sun肯定不干了,一场官司下来,微软被迫停止了VJ++的开发。
不过VJ++ 展示了Anders 的精湛的技术实力,于1999年获得微软 distinguished engineer 称号, 微软也认识到自己必须要抓住网络计算的浪潮,需要要有一个能够抗衡Java的计算平台,这就是后来的.Net.
.Net虽然更多的是一个面向Marketing 的一个概念(相信大部分人都说不清楚.Net到底是什么),但是其技术支撑也让微软在和Java的斗争中扳回一局 ,微软也有了自己的虚拟机 :CLR (Common Language Runtime), 像Java那样,代码不再编译成可执行代码,而是翻译成中间语言,交由虚拟机执行。与JVM不同的是, CLR 支持C#, VB, VC, J# 等多种语言。
作为核心人物和首席架构师, Anders 对.Net作出了巨大的贡献, 尤其是C#语言的设计和实现,让C#成为在微软平台开发的第一选择。最后,以Anders的近照和他的名言作为结尾:“程序员是最好的职业”,Anders说:“每两年,CPU的速度要加倍,内存容量是原来的四倍,但是我们的大脑还是原来的大小,很显然,将需要更多的程序员来补充这些。”
相关文章
- 2条评论
- 世味薄喜2022-07-25 12:37:33
- 了大括号作为方法体的开始和结束,都使用分号来分开statement , 至于if .. else , while , switch 等基本控制语句几乎一样, 甚至连注释的风格都
- 柔侣娇痞2022-07-25 13:05:11
- 几个人能超越(李维语),他开发的Turbo Pascal 在1983年一经推出,就以闪电般的编译速度震惊了世界,在全世界狂卖出了100多万个Copy,不要小看100多万这个数字,80年代初微机刚刚开始起 步,1982年IBM 才公布IBM兼容机的标准,当时的 程序员非常少,100多万个C