TypeScript之父:JS不是竞争对手,曾在惧怕开源的微软文化中艰难求生
生活随笔
收集整理的這篇文章主要介紹了
TypeScript之父:JS不是竞争对手,曾在惧怕开源的微软文化中艰难求生
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
開源的 TypeScript 也曾在微軟內(nèi)部遭到抵制,但如今 TypeScript 已經(jīng)成為 Web 應(yīng)用構(gòu)建的主流語(yǔ)言。
微軟的開源編程語(yǔ)言 TypeScript 是 JavaScript 的一種帶有類型系統(tǒng)的變體,到今年 12 月已經(jīng)有 10 年歷史了。
如今,它已成長(zhǎng)為開發(fā)人員構(gòu)建可在瀏覽器中運(yùn)行的應(yīng)用時(shí)常用的語(yǔ)言。但時(shí)間倒退回 2010 年,彼時(shí)的 Type Script 卻需要在依舊懼怕開源的微軟公司文化中找到自己的出路。
TypeScript 的共同創(chuàng)始人之一,來自丹麥的微軟軟件工程師和技術(shù)研究員 Anders Hejlsberg 向 ZDNet 講述了 2010 年的那一段歷史。當(dāng)時(shí)微軟的首席執(zhí)行官史蒂夫·鮑爾默領(lǐng)導(dǎo)的團(tuán)隊(duì)決定,開源戰(zhàn)略是唯一可以贏得 JavaScript 開發(fā)人員支持的制勝法寶。
鮑爾默在 2001 年曾說過“開源就是一種癌癥,Linux 是一種毒瘤”,稱其威脅到了微軟的所有知識(shí)產(chǎn)權(quán)。直到 2010 年,開源對(duì)于微軟的高層管理人員來說仍然是一個(gè)棘手的問題。
Hejlsberg 說:“Linux 被視為對(duì) Windows 的威脅,可事實(shí)證明,它恰恰相反。”
鮑爾默于 2014 年 8 月辭去首席執(zhí)行官一職。如今,在微軟首席執(zhí)行官薩蒂亞·納德拉的領(lǐng)導(dǎo)下,公司已經(jīng)將業(yè)務(wù)重心轉(zhuǎn)向了云計(jì)算,并熱情地?fù)肀Я碎_源社區(qū),還收購(gòu)了開源代碼存儲(chǔ)庫(kù) GitHub。
微軟的其他主要開源項(xiàng)目包括流行的代碼編輯器 Visual Studio Code(VSCode)、.NET Code 和 TypeScript。TypeScript 是 JavaScript 的超集,帶有類型系統(tǒng),代碼可編譯為 JavaScript。
自 2012 年正式發(fā)布以來,TypeScript 已成為瀏覽器應(yīng)用程序前端開發(fā)的主導(dǎo)語(yǔ)言之一,Slack、Airbnb 以及微軟自己都采用了 TypeScript,微軟還用 TypeScript 構(gòu)建了 VS Code。這種語(yǔ)言現(xiàn)在與 Java、JavaScript 和 Python 一道,在十大編程語(yǔ)言中占有一席之地。
但回到 2010 年,Hejlsberg 知道在微軟的雷蒙德總部推銷開源 TypeScript 的想法可能會(huì)是一個(gè)艱巨的挑戰(zhàn)。隨著這種編程語(yǔ)言迎來十周年紀(jì)念日,他回憶起微軟彼時(shí)是如何看待開源代碼的。
“圣誕節(jié)就是我們的 10 周年紀(jì)念。”Hejlsberg 告訴 ZDNet,“TypeScript 一開始實(shí)際上只是一個(gè)想法,看看我們是否可以在 JavaScript 方面做得更好”。
“我們構(gòu)建了一些原型,然后將它們整合在一起。但是很明顯,我們要吸引 JavaScript 社區(qū)的唯一方法就是開源。但在那時(shí)的微軟討論這個(gè)話題的氛圍和今天是大相徑庭的。”
Hejlsberg 的 TypeScript 團(tuán)隊(duì)當(dāng)時(shí)的處境并不好,他們需要扭轉(zhuǎn)高層的偏見,高層的那些人對(duì) Hejlsberg 所做的事情有強(qiáng)烈的抵觸情緒。雖然 Hejlsberg 沒有提及任何當(dāng)初反對(duì) TypeScript 的高管的名字,但 Hejlsberg 指出, 當(dāng)時(shí)在鮑爾默的領(lǐng)導(dǎo)下,微軟對(duì)開源有著“非常矛盾”的態(tài)度,而且有一種“恐懼”心理。
Hejlsberg 說:“我們知道這是我們必須做的事情,但是我們沒有這方面的經(jīng)驗(yàn)。”
可是隨著 TypeScript 的逐漸成熟,加上開源在微軟主營(yíng)業(yè)務(wù)從 Windows 到云的轉(zhuǎn)變過程中獲得了認(rèn)可,該公司在 2014 年通過 GitHub 上的一個(gè)公共存儲(chǔ)庫(kù)將 TypeScript 轉(zhuǎn)型為“開放式開發(fā)”模式。使用 GitHub,意味著 TypeScript 和 JavaScript 的開發(fā)社區(qū)可以影響這種編程語(yǔ)言的未來發(fā)展。
由于采用了這種全新的方法,他的團(tuán)隊(duì)現(xiàn)在與他們的客戶,也就是使用 JavaScript 或 TypeScript 的開發(fā)人員之間實(shí)現(xiàn)了“零距離”。
Hejlsberg 解釋說:“從技術(shù)意義上講,開源是指你向人們提供你的源代碼并放棄你的知識(shí)產(chǎn)權(quán),這就是技術(shù)上的開源。但接下來是開放式開發(fā),你實(shí)際上是在公開地完成整個(gè)開發(fā)過程。自 2014 年 TypeScript 移至 GitHub 以來,我們一直在這樣做。”
GitHub 在 2018 年被微軟以 75 億美元的價(jià)格收購(gòu),如今由約 20 位微軟工程師組成的 TypeScript 團(tuán)隊(duì)的所有日常工作都在 GitHub 上完成,從而做到了“與客戶保持從未有過的親密關(guān)系”。
Hejlsberg 曾在 Borland 任職,自 1996 年以來一直在微軟工作,負(fù)責(zé)構(gòu)建 Turbo Pascal 編譯器。在微軟,他還是 C# 的首席架構(gòu)師。
Hejlsberg 說,在遷移到 GitHub 之前,TypeScript 用戶會(huì)在開發(fā)者大會(huì)上提交錯(cuò)誤或需求請(qǐng)求,但他的團(tuán)隊(duì)往往需要一年的時(shí)間來交付新功能,結(jié)果經(jīng)常會(huì)錯(cuò)過時(shí)機(jī)。
為什么要?jiǎng)?chuàng)建 TypeScript?
TypeScript 是在微軟和 Web 走在重要路口的有趣關(guān)頭誕生的。由于 Internet Explorer 的市場(chǎng)份額被谷歌 Chrome 攫取,微軟在 2015 年使用開源 Chakra JavaScript 引擎打造了全新的 Edge 瀏覽器。但是到了這個(gè)時(shí)候,專注于 Web 標(biāo)準(zhǔn),具備功能強(qiáng)大的 V8 JavaScript 引擎的谷歌 Chrome 顯然已經(jīng)贏得了瀏覽器大戰(zhàn)。
“瀏覽器之戰(zhàn)結(jié)束了,谷歌構(gòu)建了 Chrome,HTML5 也在崛起。谷歌還構(gòu)建了一個(gè)非常高效的 JavaScript 引擎,JavaScript 的效率大大提高了。每個(gè)人都開始意識(shí)到,瀏覽器將成為真正的應(yīng)用的樂園。”Hejlsberg 回憶道。
那時(shí),開發(fā)人員已開始為瀏覽器構(gòu)建龐大的 JavaScript 應(yīng)用程序,并努力用 JavaScript 編寫它們,他說這種語(yǔ)言缺乏諸如模塊、類等關(guān)鍵功能;而且,重要的是缺乏一種通過程序中的規(guī)則來建立秩序的類型系統(tǒng)。
然后是開發(fā)工具,比如 VS Code 這樣的集成開發(fā)環(huán)境(IDE),它們可以提高開發(fā)人員的生產(chǎn)率。
“想一想我們開發(fā)工具強(qiáng)大能力的源泉(例如現(xiàn)代化的 IDE),包括 Visual Studio 或 WebStorm(來自 JetBrains)以及其他產(chǎn)品所擁有的的所有編程生產(chǎn)力特性(例如 VS Code 的 IntelliSense、代碼定義、代碼導(dǎo)航等等),都需要 IDE 能夠推理出你正在處理的代碼。我們都認(rèn)為這是理所當(dāng)然的需求。”他說,“類型系統(tǒng)是你推理代碼的一種方法。它提供了在運(yùn)行和部署代碼之前檢查代碼的能力。如果編程語(yǔ)言沒有類型,這幾乎是不可能做到的。當(dāng)時(shí),開發(fā)人員正在做很多瘋狂的事情,例如編寫 Outlook.com 這樣的大型項(xiàng)目。該產(chǎn)品曾經(jīng)是用 C# 的一個(gè)變體編寫的,然后使用稱為 Script Sharp 的工具交叉編譯到了 JavaScript 上。”
谷歌有一個(gè)類似的交叉編譯工具,稱為 Google Web Toolkit(GWT),該工具允許其開發(fā)人員使用 Java 編寫代碼并交叉編譯為 JavaScript。通過這種方式,谷歌獲得了成熟的開發(fā)工具鏈。他們可以獲得具有項(xiàng)目功能、模塊和類,以及 IntelliSense 和語(yǔ)句自動(dòng)完成功能的 IDE,然后他們可以將 JavaScript 視為一種指令語(yǔ)言。
在 TypeScript 出現(xiàn)之前,微軟打算將一種稱為 Script Sharp 的工具轉(zhuǎn)變?yōu)楫a(chǎn)品。但是 Hejlsberg 想知道這些開發(fā)人員是否愿意“屈服于此來編寫 JavaScript”。那么,為什么不嘗試解決 JavaScript 的實(shí)際問題呢?
Hejlsberg 說:“因?yàn)槟憧隙]法告訴人們說,用另一種語(yǔ)言編寫代碼可以為 JavaScript 建立最佳的開發(fā)體驗(yàn)。因此,我們開始研究如何解決這些問題,以為 JavaScript 構(gòu)建更好的工具。這的確是 TypeScript 的起源。關(guān)鍵是要向語(yǔ)言中添加類型系統(tǒng),而且還不能影響那些讓 JavaScript 如此流行的東西。”
Hejlsberg 和他的公司決定建立一個(gè)“可擦除類型系統(tǒng)”,這個(gè)組件使 TypeScript 成為 JavaScript 的超集。在編譯時(shí),TypeScript 會(huì)刪除所有類型并將代碼還原回 JavaScript。
從某種意義上說,它是一個(gè) type system,只存在于開發(fā)人員編程期間,在運(yùn)行時(shí)就會(huì)消失。不過在運(yùn)行的時(shí)候,它給你帶來的只有好處,沒有任何缺點(diǎn)。
TypeScript 的主要競(jìng)爭(zhēng)對(duì)手有哪些?
根據(jù) Hejlsberg 的說法,TypeScript 的唯一真正競(jìng)爭(zhēng)對(duì)手是 JavaScript,因?yàn)檫@兩種語(yǔ)言都是運(yùn)行前端應(yīng)用程序的必備語(yǔ)言,而 WebAssembly 卻模糊了原生應(yīng)用程序和瀏覽器應(yīng)用程序之間的界限。
他說:“但是 JavaScript 并不是真正的競(jìng)爭(zhēng)者。它是我們的雙胞胎或是另一個(gè)自我。”
這個(gè)問題實(shí)際上是:是否存在與 JavaScript / TypeScript 競(jìng)爭(zhēng)的語(yǔ)言?答案是肯定的也是否定的。但是你在這些列表上看到的每種語(yǔ)言通常都有相似點(diǎn),例如 Python 已在機(jī)器學(xué)習(xí)和 AI 領(lǐng)域找到了很多用例,而 SQL 被用于創(chuàng)建數(shù)據(jù)庫(kù),C# 和 Java 在企業(yè)后端發(fā)光發(fā)熱。
“JavaScript 和 TypeScript 是前端的運(yùn)行方式。這是瀏覽器中唯一運(yùn)行的語(yǔ)言,除了現(xiàn)在的 WebAssembly 之外。因此,這是完全自然而然的親緣關(guān)系。如果要編寫 Web 應(yīng)用程序,你就會(huì)用 JavaScript 或 TypeScript 編寫。”
像 JavaScript 一樣,微軟的 TypeScript 也會(huì)跟隨 ECMAScript 標(biāo)準(zhǔn)的發(fā)展步伐,并且 TypeScript 的進(jìn)展速度越來越快,以迎合喜歡純 JavaScript 的開發(fā)人員。
Hejlsberg 說:“一旦功能進(jìn)入 ECMAScript 標(biāo)準(zhǔn)化流程的第三階段,我們就認(rèn)為該功能已準(zhǔn)備就緒,可以在 TypeScript 中采用,然后我們會(huì)與社區(qū)合作以合并拉取請(qǐng)求。”
在過去的兩年中,TypeScript 團(tuán)隊(duì)改進(jìn)了對(duì) JavaScript js.doc 注釋中類型注解的支持,從而“為那些不想使用 TypeScript 的人”帶來更適合他們的 Type Script。
“由于 TypeScript 是 JavaScript 的超集,因此你也可以將 JavaScript 視為 TypeScript 的子集。這意味著我們整個(gè) TypeScript 工具鏈非常樂于處理 JavaScript,并在 JavaScript 之上提供所有服務(wù),”Hejlsberg 說。
“從某種意義上說,JavaScript 就像是沒有類型注釋的 TypeScript。因此,一種流行的 JavaScript 使用方式是,人們將類型注解放在注釋(js.doc 注釋)中,而不是直接在源代碼中使用類型注解。編譯器實(shí)際上可以從這些注釋中獲得很多信息。”
正因如此,在過去的幾年中,Heijlsberg 和他的團(tuán)隊(duì)一直在增強(qiáng)對(duì) js.doc 注釋的支持,并增強(qiáng)直接使用 JavaScript 的能力。
原文鏈接
https://www.zdnet.com/article/typescript-creator-how-the-programming-language-beat-microsofts-open-source-fears/?www.zdnet.com
作者:ZDNet
譯者:王強(qiáng)
策劃:李俊辰
鏈接:TypeScript之父:JS不是競(jìng)爭(zhēng)對(duì)手,曾在懼怕開源的微軟文化中艱難求生
來源:微信公眾號(hào) | 前端之巔
總結(jié)
以上是生活随笔為你收集整理的TypeScript之父:JS不是竞争对手,曾在惧怕开源的微软文化中艰难求生的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Union international
- 下一篇: 超声波流量传感器/流量计在生物制药的层析