- 我是一个线程(修订版)
- 我是一个 Java class
- Javascript:一个屌丝的逆袭
- Java : 一个帝国的诞生
- JSP 一个装配工的没落
- TCP/IP 之 大明王朝邮差
- TCP/IP 之大明内阁
- TCP/IP 之蓟辽督师
- CPU 阿甘
- CPU 阿甘之烦恼
- CPU 阿甘:函数调用的秘密
- 我是一个网卡
- 我是一个路由器
- 我是一个进程
- 我是一块硬盘(上)
- 我是一块硬盘(下)
- 我是一个键盘
- 张大胖的 socket
- 张大胖学递归
- 学习面向对象的令狐冲
- 张大胖学数据库
- 数据库村的旺财和小强
- 小李的数据库之旅(上)
- 小李的数据库之旅(下)
- 漫画:什么是机器学习?
- 那些烦人的同步和互斥问题
- IE 为什么把火狐和 Chrome 给打伤了?
- 对浏览器村的第二次采访
- 节约标兵 IE 的自述
- EMail 诞生记
- Email 诞生记(下)
- Http 历险记(上)
- Http 历险记(下)-- Struts 的秘密
- 动物王国的面向对象
- 冯·诺伊曼计算机的诞生
- Http Server : 一个差生的逆袭
- 张大胖的加法器
- 从 1 加到 100:一道简单的数学题挑战下你的大脑
- 编程语言
- Javascript:一个屌丝的逆袭
- 计算机语言之战
- 我和编程语言的爱恨情仇(上)
- 我和编程语言的爱恨情仇(下)
- Android 为什么选择了 Java
- iOS 为什么选择了 Object-C?
- Basic : 一个老兵的自述
- Node.js : 我只需要一个店小二
- 命令式编程 vs 声明式编程
- 编译还是解释?
- 程序人生
- “架构师"小赵
- 师兄说
- 师姐说
- 小王的架构师之路
- 小李的版本管理系统
- 小超穿越记
- 小李的 Build 之路(上)
- 小李的 Build 之路(下)
- 张大胖改 Bug
- 我的编程之路--大学趣事
- 码农小王的一天
- 小李在外企
- 张大胖的需求估算
- 从厨师到码农
- 聊一聊那些神一样的程序员们(上)
- 聊一聊那些神一样的程序员们(中)
- 聊一聊那些神一样的程序员们(下)
- 谁是互联网之父?
- 一个价值百万的创业教训
- 让自己与众不同 - 提升工作的价值
- 看看你的“易燃性”
- 从无聊的工作中寻找价值
- 什么样的学生适合报考计算机?
- 谈谈程序员的职业方向(上)
- 谈谈程序员的职业方向(中)
- 谈谈程序员的职业方向(下)
- 谈谈培训班的作用
- 码农需要知道的“潜规则”
- 学习编程的加速度
- 码农在工作中的必备能力
- 码农和英语
- 老司机经验
- 假如时光能够倒流, 我会这么学习 Java
- 假如我是计算机系老师
- 学会编程, 而不是学会 Java
- 从增删改查中突围
- 抽象:程序员必备的能力
- 懒就一个字
- 编程的自学方法
- 小王买房记
- 从一道面试题谈谈一线码农应该具备的基本素质
- 想写框架的看过来
- 苹果手机变砖头以后
- 如何快速的学习一门技术?
- 唯一不变的是变化: 谈谈微信应用号
- 什么是企业应用?
- 勿以浮沙筑高台
- 为什么敏捷开发难于成功?
- localhost vs 127.0.0.1
- GitHub/Stackoverflow 找工作时有什么用?
- 动词 or 名词 :这是一个问题
- 如何选择入行语言
- 有时候,沉默是金
- 零 Bug 的代码是怎么炼成的?
- 浮点数为什么不精确?
- 文章错误大全
- Open Source--不要为了开源而开源
- 一不留神,代码就腐化了
- 先做个“键盘侠”, 再来写程序
- 不加断点调试的程序员是好程序员
- 码农必备技能:烂代码的处理之道(上)
- 码农必备技能:烂代码的处理之道(下)
- 学习数据结构有用吗?
- 从现在开始,丰富你的简历
- 那些永不过时的书,你看过几本吗?
- 学好编程必备的一个品质你知道吗?
- 你最爱的 Java
- 搞懂了这几点,你就学会了 Web 编程
- Spring 的本质系列(1) -- 依赖注入
- Spring 本质系列(2)-AOP
- 三层架构和 MVC 那点事儿
- Java 帝国之拨云见日识回调
- 小张的 Duck Typing
- JDBC 的诞生
- JDBC 后传
- 一个不安分的 JDBC 驱动
- Java 帝国之 Java bean (上)
- Java 帝国之 Java bean(下)
- Java 帝国之函数式编程
- Java 帝国之函数式编程(下)
- 关于 Java 初学者需要知道的 10 件事
- JUnit 你不知道的那些事儿
- 圣诞礼物:Java EE 的历史
- Java EE 读书指南
- 给小白的 Java EE 指南
- 给小白的 Java EE 指南(2)
- 给小白的 Java EE 生存指南(3) : XML
- 给小白的 Java EE 生存指南(4) : 一只叫 Tom 的猫
- 给小白的 Java EE 指南(5) : AJAX
- 给小白的 Java EE 生存指南(6) :Java 反射
- 闲聊
- "饿了么"初体验
- 来自大脑的控诉
- 一个高中生是怎么玩自媒体的?
- 尝试 分答
- 到底应不应该上培训班?
- 自学编程中遇到问题怎么办?
- 据说 99%的初级程序员看完后都不迷茫了
- 一行代码引发的“血案”
- 对一个死锁问题的思考
- 通过外包进入名企
- 请开往十年前的今天
- 为什么自学中最好有个师傅指导一下?
- 这个网站值得你花时间投入
- 为什么你无法坚持自学编程?
聊一聊那些神一样的程序员们(下)
这一篇主要聊一聊安德斯·海尔斯伯格(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 罗在 2013 赛季初走进皇马主 席办公室说 : 主 席先生, 我在这里很不开心" :-) ), 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 的速度要加倍,内存容量是原来的四倍,但是我们的大脑还是原来的大小,很显然,将需要更多的程序员来补充这些。”
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论