开源中国|TypeScript之父:JS不是竞争对手

Type4.0已于上月正式发布 。 近日 , 外媒ZDnet则对Type之父安德斯·海尔斯伯格(AndersHejlsberg)进行了一则专门访谈 , 就Type的发展历程进行了分享 。
开源中国|TypeScript之父:JS不是竞争对手
文章图片
图片:Microsoft/YouTube
首先 , Hejlsberg提到了在Type发展初期时微软内部对开源的态度 。 众所周知 , 微软的前首席执行官史蒂夫·鲍尔默(SteveBallmer)曾公开的表达过“Linux是一种癌症”言论 。 他认为 , Linux威胁着微软的所有知识产权 。 而Hejlsberg则持不同意见 , 他认为Linux并不是Windows的威胁 , “事实证明 , 它恰恰相反 。 ”
Hejlsberg称 , 早在2010年微软还在Ballmer的带领下时 , 他的团队就认为 , 开源战略是赢得Java开发者的唯一途径 。 不过当时的他知道 , 想要在微软的总部将Type作为一个开源项目推行 , 将会是很困难的一件事 。
Hejlsberg透露 , 一开始Type其实只是一个简单的想法 , 一个想看看他们是否可以做得比Java更好一点的想法 。 "我们建立了一些原型 , 并把它扔在了一起 。 但当时我们真的很清楚 , 我们吸引Java社区的唯一方法就是开源 。 不过在当时的微软 , 这无疑是一个很破格的想法" 。
彼时的微软在Ballmer的领导下对开源持有一个"非常矛盾"且"害怕"的态度 , Hejlsberg的Type团队也不可避免地在微软内部收到了抵制 。 "我们有点知道这是我们必须要做的事情 , 但我们没有做的经验 。 "
好在现如今 , 随着Type项目日益成熟、微软开始大力拥抱开源 , Hejlsberg的Type团队也终于不用再像之前一样如履薄冰了 。
为什么要创建Type
Type孵化在一个有意思的阶段 。 彼时的谷歌Chrome浏览器 , 凭借其对Web标准的关注和一个名为V8的强大Java引擎 , 已经成为了浏览器大战中的赢家 。
Hejlsberg回忆称 , 谷歌打造了一个非常高效的Java引擎 , Java的效率也大幅提升 。 每个人都开始意识到 , 浏览器将成为构建真正应用的地方 。 他说 , 当时的开发人员已经开始为浏览器构建庞大的Java应用 , 并努力用Java编写这些应用 。
不过Hejlsberg认为 , 这种语言缺乏modules、classes等关键功能;重要的是 , 还缺乏在程序中通过规则创建秩序的typesystem 。 而Type的开发目的就是为了解决这些问题 , 为Java构建更好的工具 。 此举的关键在于 , 要在语言中添加一个typesystem , 而不对Java最受用户喜欢的那一部分内容造成影响 。
于是 , Hejlsberg和他的团队决定建立一个"erasabletypesystem" , 这个组件则使得Type成为了Java的超集 。 在编译时 , Type会删除所有的types并将其返回给Java 。
Hejlsberg解释说 , 从某种意义上说 , 它是一个typesystem , 只存在于开发者体验期间 , 但在运行时它就消失了 。 不过在运行时 , 它能给你带来的只有好处 , 没有任何缺点 。
【开源中国|TypeScript之父:JS不是竞争对手】Type的主要竞争对手是什么?
Hejlsberg称 , Type的唯一真正竞争对手是Java 。 因为这两种语言都是运行前端应用程序的必备语言 , 而WebAssembly却模糊了本机应用程序和浏览器应用程序之间的界限 。
不过他也表示 , Java并不是真正的竞争对手 , “它是我们的孪生兄弟或另一个自我” 。 由于Type是Java的超集 , 所以用户也可以将Java视为Type的子集 。 这意味着整个Type工具链非常乐于处理Java并在Java之上提供所有服务 。
Hejlsberg认为 , 从某种意义上说 , Java就像没有类型注解的Type 。 所以一种流行的使用Java的方式是 , 人们不会直接在你的源代码中使用类型注解 , 而是将类型注解放在注释中(js.doc注释) , 编译器则可以从这些注释中获得很多信息 。
因此 , 在过去的几年中 , Hejlsberg和他的团队则一直在增强对js.doc注释的支持 , 从而增强了直接使用Java的能力 。