18

JavaScript 爆红后,微软为何还要开发 TypeScript?

 3 years ago
source link: https://blog.csdn.net/csdnnews/article/details/108915115
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

z26Nvae.gif!mobile

开源 TypeScript 在经历过最初微软的内部抵制后,如今终于成长为构建 Web 应用程序的首选语言。

aQnqmqJ.jpg!mobile

作者 | Liam Tung

译者 | 弯月,责编 | 屠敏

头图 | CSDN 下载自东方 IC

出品 | CSDN(ID:CSDNnews)

以下为译文:

到今年12月,微软的开源编程语言 TypeScript 就要满十周岁了,这是JavaScript 的另一种带有类型系统的编程语言。

如今,TypeScript 已成为构建在浏览器中运行的应用时最常使用的编程语言,但早在 2010 年的时候,微软的公司文化仍然对开源充满了恐惧,而 TypeScript 不得不一路披荆斩棘另辟蹊径。

TypeScript 的作者之一、丹麦的微软软件工程师、微软技术研究员 Anders Hejlsberg 表示,在 2010 年,微软以首席执行官史蒂夫·鲍尔默为首的领导团队认为, 开源是赢得 JavaScript 开发人员的唯一方法。

在 2001 年的时候,鲍尔默曾经称 Linux 为“癌症”,因为 Linux 威胁到了微软的所有知识产权,而在 2010 年,对于微软的高层管理人员来说,开源仍然是一个棘手的问题。

Hejlsberg 表示:“ 当时 Linux 被视为对 Windows 的威胁,而事实恰恰相反。”

2014 年 8 月,鲍尔默辞去了首席执行官一职,并自此放下了对 Linux 的敌意。而如今,在首席执行官 Satya Nadella 的领导下,微软一直专注于云计算,同时也开始拥抱开源,并 收购了开源代码存储库 GitHub

微软主要的开源项目包括流行的代码编辑器 Visual Studio Code、 NET Code 和 TypeScript 等。TypeScript 是 JavaScript 的超集,其类型系统可编译为 JavaScript。

自2012年正式发布以来,TypeScript 已成为浏览器应用程序前端开发的主要语言,Slack、Airbnb 以及微软都采用了 TypeScript,就连 VS Code 也是用 TypeScript 构建的。如今,该语言已与 Java、JavaScript 和 Python 等一起荣登十大编程语言。

但在2010年的时候,Hejlsberg 知道,在微软的 Redmond 总部力推 TypeScript 的开源项目难度非常大。如今在 TypeScript 即将迎来十周年之日,Hejlsberg 回顾了当初微软对开源的恐惧。

他表示:“到今年圣诞节,TypeScript 就满十周岁了。最初 TypeScript 实际上只是一个想法,我们想试试看能否进一步提升 JavaScript。”

“我们构建了一些原型,然后将它们整合在一起。但是很明显,吸引 JavaScript 社区的唯一方法就是开源。当时,我们在微软开展了一场与众不同的讨论。”

Hejlsberg 负责的 TypeScript 团队“撑起了一杆大旗,我们一群人对于应该干些什么有着自己强烈的看法。”虽然没有说明当时持反对意见的主管,但他指出,当时在鲍尔默的领导下,微软内部非常矛盾,而且对开源充满了恐惧。

Hejlsberg 表示:“我们知道我们必须这么做,但是我们没有经验。”

但随着 TypeScript 的成熟,以及微软开始逐步接受开源,而 Windows 也开始向云转变, 2014 年 TypeScript 终于通过 GitHub 上的公共代码库转变成了“开放式开发”的模型。 使用 GitHub 可以让 TypeScript 和 JavaScript 开发人员社区影响其未来。

由于采用了不同的方法,现在 Hejlsberg 的团队与客户(即使用 JavaScript 或 TypeScript 的开发人员)之间实现了“零距离”。

Hejlsberg 解释说:“从技术的角度来看,开源指的是向人们提供源代码并放弃你的知识产权,理论上这样才是开源。”

“但是开放式开发实际上指的是,公开整个开发过程,自 2014 年 TypeScript 移至 GitHub 以来,我们一直在这样做。”

如今,由微软的20位工程师组成的 TypeScript 团队所有的日常工作都在 GitHub 上完成,从而实现了“与客户的亲密接触,这是我从未见过的事情”。(2018年,GitHub 被微软以75亿美元的价格收购)。

自 1996 年以来,Hejlsberg 一直在微软任职,他曾负责构建 Turbo Pascal 编译器,还曾担任微软 C# 的首席架构师。

Hejlsberg 说,在迁移到 GitHub 之前,TypeScript 用户需要在开发者大会上提交错误或需求请求,但是他的团队需要一年的时间才能交付新功能,因此可能会错过最佳时机。

uY7zui.png!mobile

为什么要创建 TypeScript?

TypeScript 是微软在互联网上拼搏的紧要关头产生的。由于 Internet Explorer 的市场份额输给了 Google Chrome,后来 2015 年微软使用开源Chakra JavaScript 引擎启动了 Edge 浏览器。但当时,专注于网络标准且功能非常强大的 JavaScript 引擎 V8 的 Google Chrome 已成为浏览器大战的赢家。

Hejlsberg 回忆道:“当时浏览器大战已经结束了,Google 构建了 Chrome,而 HTML5 也正式来到了。Google 还构建了一个非常高效的 JavaScript 引擎,JavaScript 的效率大大提高了。每个人都开始意识到,浏览器将成为应用构建的平台。”

那时,开发人员已开始为浏览器构建庞大的 JavaScript 应用,但遇到了许多困难,他说, 但这种语言缺乏模块、类等关键功能,而且更重要的是缺乏类型系统,无法在程序中按照规则建立秩序。

很多开发人员的工具,例如 VS Code 这样的集成开发环境(IDE),都可以提高开发人员的生产率。

他表示:“想想看开发工具(例如现代 IDE)中我们认为理所应当的强大功能,例如 Visual Studio 或 WebStorm(JetBrains)以及其他产品中所有关系到程序员生产力的功能,例如 VSCode 的 IntelliSense、代码定义和代码导航,这一切都需要 IDE 能够推理你的代码,才能正常使用。”

“类型系统是推理代码的一种方法。其功能是在运行和部署代码之前检查代码。如果某种语言中没有类型,这些功能几乎是不可能的。”

“当时,开发人员正在做疯狂的事情,例如编写整个产品,例如Outlook.com,该产品曾经是用一种C#的变体编写的,后来他们又使用一种名为Script Sharp的工具交叉编译到JavaScript。”

Google有一个类似的交叉编译工具,名叫Google Web Toolkit(GWT),该工具允许开发人员使用Java编写代码,然后交叉编译为JavaScript。

他说:“Google通过这种方式获得了成熟的开发人员工具。他们的IDE拥有项目功能、模块和类,以及IntelliSense和语句启动补齐,然后他们可以将JavaScript视为一种指令语言。”

在TypeScript出现之前,微软打算将一款名为Script Sharp的工具转变为产品。但是,Hejlsberg怀疑这些开发人员不愿意“倒退至使用JavaScript的年代”。那么,为什么不尝试使用JavaScript来解决真正的问题呢?

他说:“你总不能告诉人们通过使用另一种语言来体验JavaScript开发的最佳实践。”

“因此,人们开始研究如何解决这些问题,以及怎样才能为JavaScript构建更好的工具。而这就成为了TypeScript的起源。关键是要向JavaScript语言添加类型系统,同时又不能影响让JavaScript如此流行的因素。”

Hejlsberg团队决定建立一个“可擦除的类型系统”,该组件让TypeScript成为了JavaScript的超集。在编译时,TypeScript会删除所有类型并将控制权交还给JavaScript。

他解释说:“从某种意义上说,这是一个类型系统,但仅存在于开发期间,在运行时就会消失。但是,它带来了诸多优势,却没有任何缺点。”

jmUJRrm.png!mobile

TypeScript 的主要竞争对手是什么?

根据Hejlsberg的说法,TypeScript唯一的竞争对手就是JavaScript,因为这两种语言都是运行前端应用程序的必备语言,而WebAssembly只是模糊了原生应用与浏览器应用之间的界限。

他说:“但是JavaScript并不是真正的竞争对手。因为我们是相辅相成的关系,或者说是另一个自我。”

真正的问题是,“JavaScript和TypeScript有竞争对手吗?”可以说有,也可以说没有。每种编程语言通常都有相似点,例如Python已在机器学习和AI中找到了很多用途,而SQL用于创建数据库,而C#和Java则主要服务于企业后端。

“JavaScript和TypeScript的主要用途在前端,也是唯一能运行在浏览器中的语言,除了WebAssembly之外。因此,二者之间自然非常亲近。如果要编写Web应用程序,你肯定会选择使用JavaScript或TypeScript。”

与JavaScript一样,微软的TypeScript也遵循了ECMAScript标准的发展,而且我们会开发出越来越多的TypeScript功能,希望喜欢纯JavaScript的开发人员也能够喜欢TypeScript。

他表示:“在某个功能进入ECMAScript标准化流程的第三阶段后,我们就认为该功能已准备就绪,可以在TypeScript中采用,然后我们会与社区合作,合并请求。”

在过去的两年中,TypeScript团队改进了对JavaScript js.doc注释中类型注释的支持,他们努力“为那些不想使用TypeScript的人”构建TypeScript。

Hejlsberg说:“由于TypeScript是JavaScript的超集,因此你也可以将JavaScript视为TypeScript的子集。这意味着我们的整个TypeScript工具链都非常乐于处理JavaScript,并在JavaScript之上提供所有服务。”

“从某种意义上说,JavaScript就像没有类型注释的TypeScript。因此,JavaScript的一种流行的使用方式是,人们将类型注释放在注释(js.doc注释)中,而不是直接在源代码中使用类型注释。而编译器可以从这些注释中获得很多信息。”

“因此,在过去的几年中,我们增强了对js.doc注释的支持,并增强了直接使用JavaScript的能力。”

原文:https://www.zdnet.com/article/typescript-creator-how-the-programming-language-beat-microsofts-open-source-fears/

本文为 CSDN 翻译,转载请注明来源出处。

nayQVbv.png!mobile

FjAzMnI.png!mobile

更多精彩推荐
☞错过了秋天的第一杯奶茶,不要错过秋天第一场黑客松
☞起底 ARM:留给中国队的时间不多了

☞2020互联网公司中秋礼盒大比拼!(文末送福利)

☞自拍卡通化,拯救动画师,StyleGAN再次玩出新花样
☞还不懂Redis?看完这个故事就明白了!
☞区块链+生鲜:杜绝“偷梁换柱”和“以次充好”
点分享点点赞点在看

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK