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

作者 | 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 用户需要在开发者大会上提交错误或需求请求,但是他的团队需要一年的时间才能交付新功能,因此可能会错过最佳时机。

为什么要创建 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。

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

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 翻译,转载请注明来源出处。

JavaScript 爆红后,微软为何还要开发 TypeScript?相关推荐

  1. 版本管理-SVN冲突爆红后如何通过颜色和快捷键准确无误地合并代码(一)

    SVN冲突出现场景 如今是一个团结协作的时代,开发一个系统,往往会多人协作共同完成.版本管理是必不可少的,常用的软件有Git,SVN等.今天说一下,SVN管理版本时,如果出现冲突后,如何快速解决冲突. ...

  2. ChatGPT 爆红后,估值 290 亿美元的 Open AI 要被收购?

    来源:AI前线 整理:冬梅 OpenAI 被曝就收购要约展开谈判 当地时间 1 月 5 日,据<华尔街日报>报道,有知情人士透露,爆红的聊天机器人 ChatGPT 背后的研究实验室 Ope ...

  3. Android Studio 打开后无故爆红后解决办法

    今天打开AndroidSutudio后表示一脸蒙蔽,项目无故爆红,我本以为是哪里的代码有错导致 报错,于是乎逐个检查,但是并没有发现任何问题,然后CelarProduct,ReBuildProduct ...

  4. 摆摊神器五菱荣光爆红后,上汽大通房车又成夜市新晋网红

    继"摆摊神器"五菱荣光售货车爆红网络后,上汽旗下的大通房车又成为市集夜市中的新晋网红.数据显示,截至目前,上汽大通房车自营租赁平台"房车生活家"已经在上海.成都 ...

  5. 农妇做自媒体爆红背后的故事

    近日,经媒体报道,农妇做自媒体月入过万引发了网络的关注.在舆论的关注下,工作室承受巨大压力后已停工,部分原创自媒体账号也已经被封号.李传帅承认之前媒体报道有夸大的成分:"一个月也就挣个几万十 ...

  6. 李子柒爆红:既然做直播能年薪过亿, 为何还要努力高考?

    "李家有女,人称子柒." 这是李子柒的简介,若不是看她粉丝达千万,很难让人把她与网红联系到一起. 她既没网红脸也没大长腿,却是网红界的一股清流. 看过李子柒视频的人,无一不对那视频 ...

  7. 90后技术宅研发Magi一夜爆红,新一代知识化结构搜索新时代来了?

    整理 | 夕颜 出品 | AI科技大本营(ID:rgznai100) 11 月 7 日,微信群里突然炸了,大家似乎都在讨论一个叫做 Magi 的搜索引擎,据说搜索结果和现在的搜索引擎很不一样,能够输出 ...

  8. 鸿蒙生息 不朽凡人,继《不朽凡人》后,鹅是老五又一新作爆红,评分9.8强势霸榜...

    大家好,我是小马哥,每天小编推荐的小说都是精心为你们挑选的,高人气高质量,希望你们喜欢,今天推荐修真小说,一起来看看.继<不朽凡人>后,鹅是老五又一新作爆红,评分9.8强势霸榜 第一本:& ...

  9. 90 后技术宅研发 Magi 一夜爆红,新一代知识化结构搜索新时代来了?

    整理 | 夕颜 出品 | AI科技大本营(ID:rgznai100) 11 月 7 日,微信群里突然炸了,大家似乎都在讨论一个叫做 Magi 的搜索引擎,据说搜索结果和现在的搜索引擎很不一样,能够输出 ...

最新文章

  1. json boolean android,如何解析Android中的JSON?
  2. 华为云云原生首次在太空验证,提升“天算星座“卫星计算精度
  3. DxOMark排名更新榜首易主 华为被拉下马:我还会回来的!
  4. python爬虫结果是字节_入门爬虫?一文搞定!
  5. onvif协议之抓图
  6. dell重装系统后找不到无线网卡驱动
  7. 2020年全国大学生数学建模竞赛优秀论文
  8. 公众平台模板消息所在行业_微信公众号模板消息群发工具免费注册试用7天
  9. C语言 isdigit、isalnum、isalpha、islower、issupper用法及其示例
  10. rabbitmq启动报错,TCP connection succeeded but Erlang distribution failed
  11. 【六袆 - Java】订单拆单记录一
  12. 如何通过多线程执行单个任务?
  13. hive一个字段包含另一个字段
  14. nolo手柄配对不上_用NOLOHOME玩电脑VR游戏-支持键鼠和游戏手柄
  15. 人类创造出来的世界——电子世界
  16. linux proc目录全称,Linux命令 今天说一说Linux 命令缩写全称
  17. 网站的配色应该如何做
  18. 《Linux运维实战:Centos7.6一键离线部署mongodb4.2.23副本集群》
  19. 牛客网产品笔试题刷题打卡——需求分析
  20. 肇庆两日自助游的策划

热门文章

  1. 黄铁军、沈向洋、王海峰入选,中国工程院21年院士增选有效候选人名单公布...
  2. 微软亚洲研究院王井东:下一代视觉识别的通用网络结构是什么样的?
  3. SAP QM 执行事务代码QS23为检验特性分配Selected Set的时候报错 - You cannot use entries from catalogs 1 and 3-
  4. BP as a Vendor and Customer Configuration
  5. SAP 系统中STO+VC 技术实现
  6. 李德毅院士:智能时代的农机驾驶——人工智能一百年
  7. SAP PM 初级系列2 – 定义计划员组
  8. 了解一下:机器学习性能优化的6个指标
  9. 我就不信看完这篇你还搞不懂信息熵
  10. 9位AI教授总结2017年:技术变得平民化,但商业竞争在不断升级