TypeScript 之父:」開源是贏得 JavaScript 開發人員的惟一途徑「

Anders Hejlsberg

做者:Liam Tung
編譯:王治治丨發佈自:思否編輯部
原文連接:https://www.zdnet.com/article...前端


微軟的開源編程語言 TypeScript 是 JavaScript 的一個超集,到今年 12 月就滿 10 歲了。程序員

它已經成長爲構建在瀏覽器中運行的應用程序的首選語言,但早在 2010 年,它不得不在微軟公司的文化中選擇本身的方式,當時微軟公司仍然懼怕開源。web

TypeScript 之父 Anders Hejlsberg 是微軟的丹麥軟件工程師和技術研究員,他在一次媒體採訪中描述了 2010 年,在微軟首席 Steve Ballmer 的領導下作出的決定 —— 開源戰略是贏得JavaScript開發人員的惟一途徑。typescript

Ballmer 在 2001 年稱 Linux 是威脅微軟全部知識產權的 "癌症",而在 2010 年,微軟的開源仍然是高層管理人員的棘手問題。數據庫

"Linux被視爲對Windows的威脅,而事實證實,它偏偏相反。"Hejlsberg 說。 編程

Ballmer 於 2014 年 8 月卸任 CEO,此後他收回了這一立場,現在,在微軟 CEO 薩提亞-納德拉(Satya Nadella)的領導下,該公司專一於雲計算並熱愛開源,還擁有開源代碼庫 GitHub。segmentfault

微軟其餘主要的開源項目包括流行的代碼編輯器 Visual Studio Code(VS Code)、.NET Code 和 TypeScrip。後端

自 2012 年正式發佈以來,TypeScript 已經成爲瀏覽器應用前端開發的重要語言,被 Slack、Airbnb 等公司採用,固然還有用 TypeScript 構建 VS Code 的微軟本身。如今,該語言與Java、JavaScript 和 Python 同樣,在十大編程語言中穩居一席之地。 瀏覽器

但在 2010 年,Hejlsberg 知道,將 TypeScript 做爲一個開源項目在微軟雷德蒙德總部推銷可能會很困難。在這一編程語言即將迎來 10 週年之際,Hejlsberg 回憶起微軟是如何以畏懼的態度看待任何開源項目的。 網絡

"到聖誕節的時候就 10 年了,TypeScript 最初真的只是一個想法,'讓咱們看看咱們是否能夠在 JavaScript 方面作得更好'。

"咱們構建了一些原型,而後將它們整合在一塊兒。可是很明顯,咱們要吸引 JavaScript 社區的惟一方法就是開源。那時的微軟進行了一次不一樣觀點的討論。"

Hejlsberg 的 TypeScript 團隊「實際上必須讓旗杆上的一羣人對咱們在這裏應該作什麼有強烈的見解」,但沒有說起任何可能反對它的高管的名字。但他指出,當時在鮑爾默(Balmer)的領導下,微軟對開源感到「很是矛盾」。Hejlsberg 說:「咱們知道這是咱們必須作的事情,可是咱們沒有經驗。」

可是隨着 TypeScript 的成熟和開源在 Microsoft 從 Windows 到雲的轉變中得到承認,該公司將在 2014 年經過 GitHub 上的公共存儲庫將 TypeScript 轉換爲「開放開發」模型。使用 GitHub 可使 TypeScript 和 JavaScript 開發人員社區影響其將來。

因爲採用了不一樣的方法,他的團隊如今與使用 JavaScript 或 TypeScript 的開發人員之間的客戶「零距離」。

Hejlsberg 解釋說:「從技術意義上講,開源是指您向人們提供您的源代碼並放棄您的知識產權,從技術上講,這是開源的。」

「可是接下來是開放式開發,您其實是在公開地完成整個開發過程,自 2014 年 TypeScript 移至 GitHub 以來,咱們一直在這樣作。」

現在,微軟於 2018 年以 75 億美圓的價格收購了 GitHub, TypeScript 團隊則由大約 20 名微軟工程師進行平常工做的地方,從而實現「與客戶保持緊密聯繫,這是我從未見過的事」。

Hejlsberg 在 Borland 任職後,自 1996 年以來一直在 Microsoft 工做,並創建了Turbo Pascal編譯器。在微軟,他仍是C#的首席架構師。

Hejlsberg 說,在遷移到 GitHub 以前,TypeScrip t用戶將在開發者大會上提交錯誤或需求請求,可是他的團隊將須要一年的時間來交付一般會錯過新功能。

爲何要建立TYPESCRIPT?

TypeScript在微軟孵化的時候,正值網絡和公司的一個有趣的關頭。隨着 Internet Explorer 的份額被 Google Chrome 奪走,微軟在 2015 年推出了使用開源 Chakra JavaScript 引擎的 Edge 瀏覽器。但當時谷歌 Chrome 瀏覽器憑藉其對網絡標準的關注和強大的 JavaScript 引擎 V8,已經成爲瀏覽器大戰的明顯贏家。

"瀏覽器大戰結束了,谷歌已經打造出了 Chrome 瀏覽器,HTML5 也正在發生。谷歌還打造了一個很是高效的 JavaScript 引擎,JavaScript 的效率已經大大提高。每一個人都開始意識到,瀏覽器將成爲真正的瀏覽器。"Hejlsberg 回憶道。

Hejlsberg 說:"當時開發人員已經開始爲瀏覽器構建龐大的 JavaScript 應用,並努力用 JavaScript 編寫這些應用,他說這種語言缺少模塊、類等關鍵功能,更重要的是,缺少在程序中經過規則建立秩序的類型系統。

而後是開發者工具,好比像 VS Code 這樣的集成開發環境(IDE),它們能夠用於提升開發者的生產力。

「若是您考慮到咱們開發工具(例如現代 IDE)的強大功能,咱們都認爲這是理所固然的,例如 Visual Studio 或 WebStorm(來自 JetBrains)以及其餘產品 —— 咱們擁有全部的程序員生產力功能,例如 VSCode 的 IntelliSense,代碼定義代碼導航須要 IDE可以推理出您正在處理的代碼。」他說。

「類型系統是您推理代碼的一種方法。它是在運行和部署代碼以前檢查代碼的能力。若是沒有使用某種語言的類型,這幾乎是不可能的。

"當時,開發人員正在作一些瘋狂的事情,好比編寫整個產品,好比Outlook.com,它一度是用 C# 的變體編寫的,而 C# 是用一種叫作 Script Sharp 的工具交叉編譯成 JavaScript 的。"

Google 有一個相似的交叉編譯工具,叫作 Google Web Toolkit(GWT),它容許其開發人員用 Java 編寫並交叉編譯成 JavaScript。

「他們能夠獲得一個真正的 IDE,具備項目功能、模塊和類、IntelliSense 和語句完成,而後他們能夠將 JavaScript 視爲一種指令語言,"他說。

在 TypeScript 出現以前,微軟就想把一個叫 Script Sharp 的工具變成產品。但 Hejlsberg 不知道這些開發者是否願意 "彎下那麼大的腰來用 JavaScript 寫做"。那麼爲何不嘗試用 JavaScript 解決真正的問題呢?

"由於確定不會經過告訴人們用另外一種語言編寫來爲JavaScript創建最佳的開發體驗。"他說。

"因此咱們開始研究咱們能作什麼來解決這些問題,爲 JavaScript 構建更好的工具。這就是 TypeScript 的真正起源。關鍵是在語言中添加一個類型系統,而不奪走當初讓 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 同樣,Microsoft TypeScript 也跟蹤 ECMAScript 標準的發展,並且愈來愈多的TypeScript被開發出來,以迎合那些喜歡純JavaScript的開發者。

「一旦功能進入 ECMAScript 標準化流程的第三階段,咱們就認爲該功能已準備就緒,能夠在 TypeScript 中採用,而後咱們與社區合做以合併請求。」

在過去的兩年裏,TypeScript團隊經過改進對JavaScript js.doc註釋中類型註釋的支持,致力於「爲那些不想使用TypeScript的人」構建TypeScript。

「因爲 TypeScript 是 JavaScript 的超集,所以您也能夠將 JavaScript 視爲 TypeScript 的子集。這意味着咱們整個 TypeScript 工具鏈很是樂於處理 JavaScript 並在 JavaScript 之上提供全部服務,」 Hejlsberg 說。

「從某種意義上說,JavaScript 就像沒有類型註釋的 TypeScript。所以,一種流行的使用 JavaScript 的方式是,人們將類型註釋放在註釋(js.doc註釋)中,而不是直接在源代碼中使用類型註釋。編譯器實際上能夠從這些註釋中得到不少信息。所以,在過去的幾年中,咱們實際上加強了對 js.doc 註釋的支持,並加強了直接使用 JavaScript 的能力。」


Anders Hejlsberg

2015 年 Anders Hejlsberg 第一次來中國,就參加了 SegmentFault 思否組織的線下活動。做爲 TypeScript 的核心開發者,在當時的活動中他就曾表示很是感謝中國如此多的開發者可以支持 TypeScript,另外他也表示,經過 SegmentFault 思否策劃的線下活動,看到了中國整個開發者社區很是大的熱情,也但願在以後愈來愈多的開發者能參與到 TypeScript 的工做中來。

拓展閱讀:
《SegmentFault 創始人祁寧對話 C# 之父 Anders Hejlsberg》
《SegmentFault 爲什麼成爲本次微軟 Ignite 大會中國區惟一社區表明?》

segmentfault 思否

相關文章
相關標籤/搜索