接上一篇
茶余饭后:聊一聊那些神一样的程序员们
这一篇主要聊一聊安德斯·海尔斯伯格(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年代初的硬件,真是非常了不起。
上一张图吧,怀旧一下 :-) 我没有学过Pascal, 只是在大学里学过C 语言,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 , 主要有下面几个原因:
1. 编译速度超快, 生成的可执行文件效率很高 : 这当然是安德斯深厚功力的体现
2. VCL (Visual Componet Library) 非常成功, 设计紧凑,优雅,可扩展行很强,相对于复杂,难用的MFC 不知道要高几个档次
3. 在数据库方面的特长非常突出,他的BDE(Borland Database Engine)可以和市面上的所有的数据库连接,对于C/S架构的应用程序开发来说是不二之选。
据说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 “不开心”以后 (这不仅让我想到C罗在本赛季初走进对皇马主席办公室说 : 主席先生, 我在这里很不开心" :-) ), 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的速度要加倍,内存容量是原来的四倍,但是我们的大脑还是原来的大小,很显然,将需要更多的程序员来补充这些。”