Anders Hejlsberg 和 Erich Gamma

大概半年前,我写了一篇名叫《有点软文》的文章,深情并茂地告诉大家,我司其实隐藏着很多牛人巨擘。有些人是身怀屠龙技,但是大家不认识;有些朋友则是声名远播,但可惜的是大家根本不知道他在微软。在看完 Connect ( Visual Studio 大会 )之后,我决定克服拖延症,来讲一讲大会上除了 Scott Gu (Asp.Net 之父)以外的两个天王巨星。

那就是 Anders Hejlsberg 和 Erich Gamma

Anders Hejlsberg

Anders 出席本次 Connect 大会,主要还是介绍他设计的 TypeScript 。那么谁是 Anders?

Anders 早年写了Compass Pascal编译器的 core,后来卖给了 Borland,也就开始为 Borland 打工。之后一直是 Turbo Pascal 的架构师。离开 Borland 之前,Anders 设计了 Delphi 语言。

96年,Anders 被 Bill Gates 亲自挖到了微软,给予了丰厚的薪水(百万美金,那还是20世纪哎我去)以及极大的权力。后果就是 Borland 和微软要死要活地打官司,控诉微软不正当拐骗,最后还真的赢了官司。之后 Anders 在微软主持开发 Visual J++,结果没几年就与 Sun 在 Java 的问题上发生了末日之战,不幸的是 Visual J++ 最终停止了开发(这哥们真是走哪儿官司打到哪儿)。随后 Anders 开始主持 .NET 的设计与开发,并且担任 C# 语言的首席架构师。

2012 年,Anders 宣布了他设计的新语言 TypeScript,这门语言是 JavaScript 的超集同时具备静态类型。TypeScript 虽然很年幼且有着浓浓的味,但是社区已经开始展现对它的兴趣,比如 Angular 2 就是用 TypeScript 写的。

简言之,如果你是微软平台上的开发者,你几乎无法和 Anders 脱离关系。而如果你是 Angular 的开发者,不久的将来,你也会感受到 Anders 的荣光。这哥们就是语言设计专业户。

Erich Gamma

我们知道 Anders 醉心于语言设计,而 Erich 就是软件开发的实践派。每每谈到软件开发,大家就不可避免地提及设计模式。而将设计模式从建筑行业引入到软件领域的,就是 Erich Gamma(当然,还有另外三个小伙伴,他们的统称十分霸气,Gang of Four,四人 帮)。Erich 91年博士毕业后就来到美国,与三个小伙伴一起布道设计模式。

注解 :经网友提醒,这里多讲点背景故事。Erich Gamma 在加入微软之前,和 Kent Beck 一起合作开发了单元测试框架 JUnit ,之后又领导了 Eclipse Java Development Tools 项目,真的是 IBM 的一个瑰宝啊。

有些工程师朋友会觉得设计模式不过是纸上谈兵,这里我们按下不表。Erich Gamma 在11年加入了 Visual Studio Team,开始在瑞士苏黎世独自带领团队(Erich 是瑞士人,我司为了大牛也真是大手笔)。加入 Visual Studio Team 之后,Erich 开始亲自操刀,用 JavaScript 实现的编辑器 Monaco。在 Visual Studio Online,Onedrive(线上),Office 365 中广泛应用。

我刚加入微软的时候,做的项目中就用了 Monaco,刚开始不知天高地厚,发现 Monaco 的 bug 后还嚷嚷着要去爆他们。有一次内部 Training,我们组也不知道怎么就请到了 Erich Gamma,他跟我们介绍如何利用 TypeScript (和 Anders 老兄产生了交集)重构 Monaco,把代码量从十万行硬是降到了两万以下。当时我都没好好听,觉得这又是一个爱忽悠的哥们。后来某次翻看设计模式的书,突然发现我天天想着要去爆的人,居然就是大名鼎鼎的 Erich。

不过凭良心讲,在没有意识到 Monaco 是 Erich 写的时候,我就已经深感 Monaco 比 Ace或者 CodeMirror 性能好的多。只不过由于只在内部使用且未开源,Monaco 并未声名远播。

直到,Erich Gamma 把 Monaco 用 Electron (跨平台包装工)包装了一下,瞬间变为多平台的编辑器 Visual Studio Code。刚发布的时候,很多朋友都以为这和 GitHub Atom 没区别,但下载使用后却发现性能比 Atom 好出很多。都是使用 Electron 实现跨平台,而编辑器本身,Monaco 暂时略甚一筹。希望切身实际地学习和领悟设计模式的最佳实践,快去看 Visual Studio Code 的源码吧!

#看到这里的朋友都是真爱,我决定透露一个我的惊人发现 从软文的角度,本文到这里其实就可以结束了。但是为了我的忠实听众们,我决定来讲一个 Google 的项目:Angular 2。

AngularJS 在经历了大火之后,Google 的朋友们发现它的缺陷过于明显(暂时不展开,同学们可以参考我以前的几篇博客),于是决定重构。而在重构的过程中,Google 的 Angular team 和微软一起合作,研究新版本 Angular 的架构的各种可行性,最终选择了使用 TypeScript 作为开发语言。而他们使用的开发工具则是 Visual Studio Code。

你们想想,一群 Google 的天才,有 Anders 设计的 TypeScript 和 Erich Gamma 开发的 VS Code 保证代码质量和开发效率,Angular 2 要好成什么样你说!

https://rebornix.com/snippets/2015/11/20/minisoft-anders-erich/

Anders Hejlsberg 和 Erich Gamma的更多相关文章

  1. Anders Hejlsberg 技术理想架构开发传奇

    Anders Hejlsberg(安德斯-海森博格) 坐在自己的办公室,双眼直直的盯着前方.他要做一个决定,决定自己未来的命运和理想.这是1996年一个普通的下午,几个小时前,他刚与比尔-盖茨结束了 ...

  2. (视频)Erich Gamma 与 Visual Studio Online 的一点野史

    大家对Erich Gamma的熟悉应该都集中在<设计模式>, Eclipse以及最近微软所发布的Visual Studio Code跨平台代码编辑器.其实在Erich加入微软的头几年里,他 ...

  3. C#之父 Anders Hejlsberg

             Anders Hejlsberg (born December 1960)[2] is a prominent Danish software engineer who co-des ...

  4. 编程语言的发展趋势by Anders Hejlsberg

    这是Anders Hejlsberg在比利时TechDays 2010所做的开场演讲. 编程语言的发展非常缓慢,期间也当然出现了一些东西,例如面向对象等等,你可能会想,那么我么这么多年的努力都到哪里去 ...

  5. Erich Gamma

    Erich Gamma是IBM的杰出工程师.他是Jazz项目的领头人之一,曾担任Eclipse的Java开发环境JDT项目的领导,目前是Eclipse的项目管理委员会成员.Erich也是经典书籍< ...

  6. .NET之父 - Anders Hejlsberg

    简介 安德斯·海尔斯伯格(Anders Hejlsberg,1960.12~),丹麦人,Turbo Pascal编译器的主要作者,Delphi和.NET之父! 安德斯·海尔斯伯格曾在丹麦技术大学学习工 ...

  7. Eclipse之父、《设计模式》作者、Junit作者之Erich Gamma

    Erich Gamma拥有多重权威身份.他是Jazz项目的主要领导人:是Eclipse的项目管理委员会成员,被业界称为“Eclipse之父”: 是经典书<设计模式>的作者四人帮之一,199 ...

  8. 【历史】- .NET之父 - Anders Hejlsberg

    简介 安德斯·海尔斯伯格(Anders Hejlsberg,1960.12~),丹麦人,Turbo Pascal编译器的主要作者,Delphi和.NET之父! 安德斯·海尔斯伯格曾在丹麦技术大学学习工 ...

  9. 引领开发工具近40年的程序员Anders Hejlsberg

    有位神级程序员在近40年中一直创造引领潮流的开发工具(Turbo Pascal/Delphi/C#/TypeScript),他就是Anders Hejlsberg. 一. Anders并没有大学文凭, ...

随机推荐

  1. Golang 学习笔记 目录总结

    - 基础: 下载安装 声明变量的方法 数据的三种基础类型:bool,数字,string 数据类型:数组和切片 数据类型:Maps 条件判断以及循环 函数 包管理 package 指针 结构体 - 初步 ...

  2. HBase的体系结构

  3. 重温前端基础之-css浮动之怪异现象

    其实,两种情况中box2的内容都是围绕着浮动元素box1来的. 因为:浮动元素会覆盖块元素,但块元素里的内容(内联盒)不会被覆盖,而是围绕着浮动盒. 将box1的背景色去掉,真相就大白了: 此时发现, ...

  4. NSURLSession的作用

    NSURLSession的作用: 1.全局配置: 2.任务生成与管理: 3.数据链接管理: po self.urlSession.delegateQueue.operations <__NSAr ...

  5. Linux cp 复制命令

    Linux 的cp命令 功能: 复制文件或目录说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中.若 ...

  6. caffe(13) 数据可视化(python接口)配置

    caffe程序是由c++语言写的,本身是不带数据可视化功能的.只能借助其它的库或接口,如opencv, python或matlab.大部分人使用python接口来进行可视化,因为python出了个比较 ...

  7. [APIO2009]会议中心(贪心)

    P3626 [APIO2009]会议中心 题目描述 Siruseri 政府建造了一座新的会议中心.许多公司对租借会议中心的会堂很 感兴趣,他们希望能够在里面举行会议. 对于一个客户而言,仅当在开会时能 ...

  8. CF 414B Mashmokh and ACM 动态规划

    题意: 给你两个数n和k.求满足以下条件的数列有多少个. 这个数列的长度是k: b[1], b[2], ……, b[k]. 并且 b[1] <= b[2] <= …… <= b[k] ...

  9. POJ1158 城市交通Traffic lights IOI 1999 (最短路)

    POJ1158 城市交通Traffic lights IOI 1999 (最短路) (1) 问题描述(probolem) 在d城里交通的安排不同寻常,城中有路口和路口之间的道路,再任意两个不同的路口之 ...

  10. 二 MapReduce 各阶段流程分析

    如果想要将问题变得清晰.精准和优雅, 需要关注 MapReduce 作业所需要的系统资源,尤其是集群内部网络资源使用情况. MR 可以运行在共享集群上处理 TB 级 甚至 PB 级的数据.同时,改作业 ...