Delphi、C# 之父 Anders Hejlsberg 首次访华 推广 TypeScript

  • 徐川

2015 年 11 月 3 日

话题:JavaScriptC#语言 & 开发架构前端

Delphi、C# 之父Anders Hejlsberg近日首次访华,并在 10 月 24 日和 27 日参加了两场见面会,分享了他目前领导开发的TypeScript项目,并与国内前端开发者近距离交流。InfoQ 记者全程参与了两场见面会以及会后的采访,本文就为读者描述一下近距离接触大师的印象,以及 Anders 对 TypeScript 的设计理念和想法。

Anders Hejlsberg(安德斯·海尔斯伯格)于 1960 年出生于丹麦,在 Borland 公司开发出 Turbo Pascal 和 Delphi 之后加入微软,主持微软下一代开发工具的研发。他为微软开发和设计出 Visual J++、.NET 平台以及 C# 语言,可以说他开发出的软件和语言影响全世界整整一代程序员。目前,他是 C# 语言的首席架构师和 TypeScript 的核心开发者与 TypeScript 开源项目的重要领导人。

Anders 印象

Anders 现年 55 岁,在软件开发的道路上已经走过 30 余年,但仍然对工作充满热情。他性格和善而风趣,同时,还是个纯粹的程序员,每天仍然有很多时间花在编程上。 虽然相处时间不长,但大家纷纷围着他舍不得分开,这是一位让人愿意亲近的长者、前辈和大师。笔者将他的印象总结为三点:终身编程、开源信徒、语言大师。

终身编程

Anders 现在每天仍然花大量的时间实际写代码,并且未来会一直写下去。他很清醒的知道自己长处:“相比起管理,我还是更擅长于编程。”

事实上,Anders 的成名之作 Turbo Pascal 通过出售软件授权就让他获得了大量财富,之后微软高薪聘请更让他衣食无忧,Anders 不仅仅是可以转管理——只要他开口,微软有很多的职位在等着他——他甚至可以什么都不用做,但他仍然坚持编程,因为这是他的兴趣和激情所在。

对于他如何能达到现在的成就,他表示,10000 小时定律和兴趣是很重要的因素,编程是一项需要时间来掌握的技能,Anders 说,他回忆一下,的确是花了这么长时间才真正掌握编程,而另一方面,兴趣也是非常重要的,如果有两个工作,一个给的多些,另一个给的少些,但是是你感兴趣的事业,Anders 建议选感兴趣的那个。

国内有不少资深程序员在工作一段时间之后都转了管理,但仍对编程难以忘怀,了解 Anders 的生平和想法,想必会有所启发。

开源信徒

Anders 对开源精神的认同和身体力行让人惊讶,他现在在 Github 上每天要提交十多次代码,很难想象他来自微软,当然,微软现在其实也在拥抱开源,并且这其中也有 Anders 的努力。

微软自 Satya Nadella(萨提亚·纳德拉)担任 CEO 后,开始融入社区,向开发者示好,其中的重要举措就是开源,Anders 是其背后的推动力量之一。不仅他之前参与的.NET 核心引擎 CoreCLR 开源,现在的 TypeScript 也彻底是由社区主导的开源项目,微软并不干涉 TypeScript 的发展方向,所有决策都由社区得出。

在 Anders 的分享里,他总结微软现在的开源战略:

  • 新开发项目首选开源
  • 创立.NET 基金会管理开源项目
  • 开源 + 开放开发,使用并依赖 Github
  • 跨平台开发工具,典型的如 Visual Studio Code

Anders 认为开源是软件开发的趋势,现在如果你的软件不是开源的,开发者可能更愿意选择别的开源的解决方案。

语言大师

Anders 在语言设计、开发工具、编译器等诸多领域都有非常深厚的功底,这为他设计出 C# 语言打下了基础,C# 语言被公认为设计非常优秀的语言,作为它的创造者,Anders 毫无疑问是一位语言设计的大师。在现场他分享了一些对编程语言的看法:

  • 极简:Anders 喜欢简单(simplicity),除非必要,否则不添加语言特性,一个好的语言特性是它必须的最小集。
  • 设计存活时间更长的语言:有些编程语言随着时间流逝不再流行,但有些语言如 C 语言,几十年过去了仍然被很多人使用,语言与趋势(如移动互联网、物联网)无关,语言设计者的目标是设计存活更长时间的语言。
  • 困难即美味:记者问到 Anders 对 JavaScript 语言的看法,他认为 JavaScript 在设计上有诸多问题,但仍然有其优点,更重要的 是,用户很多,并且难以被替代。至于 Anders 为何会选择修补 JavaScript,他认为这对他是一项挑战,以前没有人做过,解决这一问题对他就像美味一般。

TypeScript:大 JS 生态圈的一环

TypeScript 最近发布了 1.6 版本,它在社区里的接受度也越来越高,比如有人从 CoffeeScript 迁移到 TypeScript,也有人认为它比 Facebook 的 Flow 更好。这一切都要归功于 Anders 为 TypeScript 带来的优秀设计。

Anders 分享道,其实 TypeScript 做的并不多。它的两大特性,第一个给 JavaScript 加上可选的类型系统,Anders 表示,很多事情是只有静态类 型才能做的,给 JavaScript 加上静态类型后,就能将调试从运行期提前到编码期,诸如类型检查、越界检查这样的功能才能真正发挥作用。在 Anders 现场的演示可以看到,TypeScript 的开发体验的确远远超过以往纯 JavaScript 的开发体验,无需运行程序即可修复潜在 bug。

另一个特性是支持未来的 ES 6 甚至 ES 7,最近的更新都与此有关。在 TypeScript 中,你可以直接使用 ES 6 的最新特性,在编译时它会自动编译到 ES 3 或 ES 5,这个功能和最近流行的 Babel 类似,事实上,Anders 认为 TypeScript 的竞争对手并非 Dart、CoffeeScript 这类语言,而 是 Babel,不过 TypeScript 的类型系统是 Babel 无法做到的,Babel 也仅是一个编译工具,无法提供更好的开发体验。

在问到对 TypeScript 将来的规划时,Anders 显得很克制。TypeScript 不追求替代 JavaScript,没有计划直接运行在浏览器、系统里,它仅仅关注在编译到 JavaScript 之前的事情,编译之后的事情,诸如 JavaScript 性能调优等等,并不关心。

Anders 表示,TypeScript 最大的目的是让程序员更具创造性,提高生产力,它将极大的增强 JavaScript 编写应用的开发和调试环节,让 JavaScript 能够方便用于编写大型应用,进行多人协作。

这种定位让 TypeScript 能更轻松的被 JS 程序员所接受,除了上面提到社区的反应,最知名的还要数 Google 采用 TypeScript 来开发其 Angular 2 框架,Google 和微软甚至为此第一次联合召开发布会。在国内,也有 HTML5 游戏引擎 Egret 使用 TypeScript 进行开发。由此可见,TypeScript 已经足够可用,甚至进入大公司的生产环境。

当然,最后让人推荐 TypeScript 的原因,还有 Anders 本身,有如此大牛带领,相信这门语言正走在正确的道路上,它的未来不可限量。

JavaScriptC#语言 & 开发架构前端