上周,C#、Delphi 之父 Anders Hejlsberg 亲临帝都,就 TypeScript 作了一场技术分享,并与众多开发者就此进行了技术探讨。Anders Hejlsberg 加入微软的 19 年里,一直致力于 C# 和 .NET 的研发工做。同时,做为 TypeScript 的核心开发者和该开源项目的重要领导人物,他此次来帝都,主要也是为 TypeScript 布道。如下是讲座主要内容。git
(Anders)你们下午好!首先我介绍一下这是我第一次到中国来,在这儿逗留的这一天令我很是高兴,并且此前我也是很是激动的。今天在这会给你们介绍一下我一直在作的事情,包括你们都在谈论的 TypeScript 以及相关的 Open Source 的通常性的工做。程序员
我作软件开发工具已经有 35 年的时间了,并且编写了不一样语言的编程。之前都是专有的源,是封闭式的,如今我看到它有更新的变化,有一些新的方法论。github
首先咱们来看一下相关的背景。RedMonk 在上个季度刚刚发出的报告,JavaScript 在 GitHub 和 StackOverflow 被说起的次数排名都很靠前,和之前比有显著的上升。我以为这里面有一些比较重要的缘由。首先,JavaScript 是真正跨平台的语言。之前的语言,如 Java,其实如今都不算是(跨平台语言)了。另外,JavaScript 的性能近年来有 10~100 倍的飞速提高,它一个语言就能够在全部的层面上编程,这个是很是不同的地方。好比这两年的 Node.js,还有移动端 ReactNative、NativeScript 等等,均可以用它来编写。在不一样层面使用同一个语言开发,避免了学习不少新的东西。编程
其次,如今 JavaScript 已经被 ECMAScript 标准化了。今年已经出到第六版的标准,看起来很是雄心勃勃,由于他们的目的是为了解决 JavaScript 的一些遗留问题,并且另外添加一些新的模块、class 等等。如今第六版的标准我以为有不少东西是很是有意思的,像 Mondule、Class、Arrow Function 等,JavaScript 的核心实际就是这样的。首先它是动态的,是两个家族系列(Dynamic 和 Static),对动态的界定是它不须要编译,直接打印就能够了,静态的是要求你静态地进行编译。咱们能够分别来看一下动态和静态之间都各有什么优势?优势你们都知道就是它很是简化,可让你直接上手工做,并且能够互动不须要编程,并且很是容易。静态的这块更可能是强调修正一些错误,强调性能升级还有更好的工具。实际上现实来说是说动态的和静态的都各有所长,并且咱们二者都须要有。segmentfault
大概是 5 年前咱们的客户包括本身内部的团队就跟咱们说,他们在写大的 JavaScript 代码时会遇到一些问题,因此咱们想,怎么作才能增强 JavaScript 代码,让其强的更强,同时不破坏和损坏既有的价值。这就致使了咱们如今所说的 TypeScript 的出现——实际上它是 JavaScript 的超级集合,把二者(动态的、静态的)最好的东西都集合在一块儿。这样实际上带来了两个好处,一个是咱们在这上面添加了静态的,这样就有更加好的工具,还有一个好处在于你能够如今获取将来才有的一些相关的属性,能够在任何浏览器、任何的托管主机和操做系统中使用,并且它整个都是开源的,这才是跨平台的。(ECMAScript6 实际上在 5 年以后有了很是大的、多的 browser 部署才行)后端
……浏览器
以上是 Anders Hejlsberg 关于 TypeScript 基本的介绍。接下来是圆桌对话,是进一步的深刻了解。圆桌对话由 SegmentFault CTO 祁宁、LeanCloud CEO 江宏以及云适配 CTO 马铎共同参与。网络
江宏:你们好,我是 LeanCloud 的江宏。LeanCloud 是移动应用的后端云服务。我是很小的时候学编程时就开始使用 Anders 创造的 Turbo Pascal,直到后来的 Delphi。今天很高兴有机会跟大师一块儿交流。刚才 Anders 介绍了 TypeScript,那么我就以一个这方面的问题开场吧。TypeScript 在 JavaScript 之上加了 class,而据我所知,不少 JavaScript 程序员,包括一些很优秀的程序员,都对在 JavaScript 里模拟 class 有强烈的反感。除了宗教缘由之外,你以为从技术上看 class 和 prototype 有优劣之分吗?异步
Anders Hejlsberg:你的这个问题很是好,JavaScript 没有 class,因此有一些习惯于 class 的开发者认为不大好用,而加上 class 也是由于有一部分的开发者是要用这样的东西。从 TypeScript 的 compiler 来说,JavaScript 原有的 function、closure、prototype 都不受影响。对我来讲,我认为它是中性的,你能够用这个也能够用那个,有两种方法来开发。编程语言
马铎:我了解 Anders Hejlsberg 先生的技术有十来年,他在开发界里面名气很大,可谈论的问题是很是多,但如今咱们把问题回到 TypeScript 上,我想到一个问题,TypeScript 这种语言这么灵活,那么我想提的问题是,在灵活与规范化之间,TypeScript 是如何作好平衡的,这是否是 TypeScript 设计之初作的主要的考虑?
Anders Hejlsberg:TypeScript 做为一个语言来说,技术上是很是有意思的。它有一个 GridView (77:21) Type 或者是 (77:22) Type 这样的东西能够用,若是这样用的话就能够查。若是不写类型的时候,实际上就至关于 JavaScript,问题是你怎么来写类型,传统上来说编程的语言就是两个,一个是静态、一个是动态的,或者是 DodeType,全部的都是用静态类型来写的,因此你能够选用哪种形式的类型。
祁宁:TypeScript 和 ECMAScript 的关系会是怎样的?若是之后 ECMAScript 支持了愈来愈多的 TypeScript 里的新特性,咱们还须要 TypeScript 吗?
Anders Hejlsberg:我想就这个问题说两件事,首先是对于刚才提到的 ECMAScript6 的标准化,咱们是很是致力于这个工做的,它就是微软的,咱们也不是但愿要把这个语言变成一个彻底不一样的东西。另外,它实际上有一些核心的东西,一个是 TypeScript 从静态类型提供了一个更好的工具,同时在编码的时候咱们把它叫作 Downlevel,我以为多是更简化的意思。另外 ECMAScript6 标准化的时候是在不断地演变的,但我并不认为这个标准化有静态类型的系统,以后 6 还会有新版本,而如今的 browser 是不会支持它的。
祁宁:咱们知道微软在开源社区中一直颇受微辞,它也有一些颇受诟病的传统,那么如今的微软真的走向开放了吗?
Anders Hejlsberg:有关你提的问题应该更多地看一下咱们的行动,大家有本身的评判。若是看一下咱们所谓工做的流程还有整个的开源社区对这个工做的深度的介入,还有包括 Google 已经在写 Angular 2,并且是在 TypeScript 上写的,这些是事实胜于雄辩的。咱们微软也是在变的过程当中,在这个过程当中咱们也学习了不少的东西。
江宏:程序设计语言在过去几十年里经历了一个演化过程。GUI 和桌面程序催生了面向对象的语言,多核处理器和对平行计算的需求让函数式语言再次流行起来,同时也让 Erlang、Go 等一些新的语言出现。您认为下一个新的语言是什么样的,让它出现的动机会是什么?
Anders Hejlsberg:有关这点其实很难说将来会出现什么新的语言的类型,但我能够说一下哪些事情或者是因素影响了如今的工做,好比说咱们说的函数式的语言,这个对不少其余的东西来说都是很是可以带来灵感的源泉。由于函数式语言有了 C# 里的不少特性,固然微软也有本身的函数式语言 F#。另外移动应用还有云等等都影响了如今的不少工做,他们要求系统之间能够进行网络通信,可以容忍延迟,因此有了异步的编程。ECMAScript6 的标准以后会是 7,但编程的模型也是会继续向前演进的,但是编程语言的演进是很是缓慢的,由于它不是基于硬件的演变,而更可能是涉及到人方面的因素。咱们也知道在过去的 30 多年里,人大脑的尺寸没有发生太多的变化,所以编程语言方面它的演进是很是慢的。
马铎:我这有两个小问题想请教一下,第一是关于 TypeScript 的开源以及微软开源的事情,但这个问题其实能够不用问了,由于我也是一个 TypeScript 的使用者,关于开源这块其实已经有答案了。第二个问题是 TypeScript 如今发展的一种情况,我想听听 Anders Hejlsberg 先生在全球范围内以及在中国的 TypeScript 发展的情况是否是跟你所想象的同样,是好仍是很差?
Anders Hejlsberg:有关这个问题我认为 TypeScript 在过去一年半的时间里是经历了很是很是快速的或者是不少轮的增加,如今咱们看到了 Angular 2 还有 Google 也加入了,自从他们加入了以来又有了更大的增加。另外,从每月有关这个下载的相关应用来说,也是超过了 5000 万。再有,看到社区也是很是很是热闹的,由于他们如今在 GitHub 上工做了一年半的时间了,这里面有不少相关的问题,这说明在过去的一年半时间里确定是有不少相关的问题和使用。咱们看到了它的发展。TypeScript 在不少会议上或者是用户集团会议上都是有不少使用的。
祁宁:咱们知道这是您第一次来中国,您对中国的开发者印象如何?您能从您本身的经历中为这些年轻人提出建议吗?
Anders Hejlsberg:首先,我以为这是我第一次来中国,这个经历令我很是激动。另外和当地开发者社区有一些互动,另外咱们看到了整个的开发者社区热情也是很是大的,因此这些对咱们来讲都是很是震撼的,另外咱们也在微软本地的研究看了相关的项目,我发现也是特别棒的,不少东西很是务实、很是有用、很是有意思,其中不少东西我都想把它放在咱们最终的产品里。
再有,其实我很难给你们一些相关的建议,对我来讲编程的工做应该是你们都富有热情的来作的,由于我在上学的时候就开始接触这个工做,当时我的电脑都没有,什么东西都得从头学起,但我就是想学,谁也不能阻止我,并非说我但愿获得更高的薪酬,我彻底是凭热情。我很是幸运个人爱好和工做是结合在一块儿的,但不是人人都像我这么幸运,最重要的是你要找到你的热情所在,而这个又能带给你快乐,这就是带来更好的工做成就,若是你面临一个选择,一方面是工做能多给你钱,另外一方面是你很热爱的,这样的话才能工做得很是带劲,你也可以成长,同时也能学到很是多的东西。
江宏:您在微软多半是有某些管理职责的,无论是对人仍是对项目,请问您是怎么平衡对于技术工做的热情和本身的其余职责的?我相信不少技术人都会有这个问题。好比我以前在 Google 工做的时候不少工程师遇到这个问题。后来创业,不少技术出身的创业者也遇到这个问题。
Anders Hejlsberg:这个问题相对来讲比较好回答,我是自主选择作技术方面的工做,实际上我无论人,也没有人向我汇报,但在技术方面我负的责任是很是大的。由于对个人工做描述是我必需要创做出在全球开发者社区都很是有影响的产品,因此我是无论人的,我更愿意从事我很是擅长的技术方面的工做而不是管理人,这是个人专长所在,也是个人热情所在。
江宏:您在职业生涯里经历了很多编程语言和工具的生命周期。好比我之前用您主导开发的 Delphi。从技术上说 Delphi 是一个很是好的开发桌面应用的语言和开发环境,可是如今不多有人用了,彷佛 Delphi 的发展没有达到应有的高度。若是那个时候有比较多的开源社区参与,您认为事情会不同吗?您以为决定一个语言的生死和是否能流行的主要因素有哪些?
Anders Hejlsberg:这个我也是很难说的,由于当时尚未开源,如今有了开源我认为它的影响对编程语言来说是很是很是大的,并且若是没有开源将没有任何的编程语言是受欢迎的,由于开发者如今已经对私有的封闭式的东西是不敢兴趣的,并且我认为语言的设计 90% 的编程语言都是同样的,那 10% 是新的东西,新的东西发展是很是很是缓慢的,由于它和硬件如何发展都没有关系,它是和人脑和数学的发展是有关系的,因此是很是缓慢的。另外我不认为有任何的编程语言是完美无瑕的,我常常跟别人这么说,你给我看一个完美无瑕的编程语言,我立刻给你展现一个根本没有用户的编程语言。一旦编程语言有了用户,它的代码就要考虑向后的兼容性。不少技术都有不少糟糕的地方,而这个正是它们成功的表象。
以上为圆桌对话主要内容,圆桌结束后,Anders Hejlsberg 还与在场的开发者就编程方面的问题进行了交流。对于本次帝都之行,他表示很是感谢中国如此多的开发者可以支持 TypeScript,也但愿在以后愈来愈多的开发者能参与到 TypeScript 的工做中来。
查看 GitHub 该项目:Microsoft/TypeScript