Delphi、C#之父Anders Hejlsberg首次訪華 推廣TypeScript
Delphi、C#之父 Anders Hejlsberg 近日首次訪華,并在 10 月 24 日和 27 日參加了兩場見面會,分享了他目前領導開發的 TypeScript 項目,并與國內前端開發者近距離交流。
InfoQ 記者全程參與了兩場見面會以及會后的采訪,本文就為讀者描述一下近距離接觸大師的印象,以及 Anders 對 TypeScript 的設計理念和想法。
Anders Hejlsberg(安德斯·海爾斯伯格)于 1960 年出生于丹麥,在 Borland 公司開發出 Turbo Pascal 和 Delphi 之后加入微軟,主持微軟下一代開發工具的研發。他為微軟開發和設計出 Visual J++、.NET 平臺以及 C# 語言,可以說他開發出的軟件和語言影響全世界整整一代程序員。目前,他是 C# 語言的首席架構師和 TypeScript 的核心開發者與 TypeScript 開源項目的重要領導人。
Anders 印象
Anders 現年 55 歲,在軟件開發的道路上已經走過 30 余年,但仍然對工作充滿熱情。他性格和善而風趣,同時,還是個純粹的程序員,每天仍然有很多時間花在編程上。 雖然相處時間不長,但大家紛紛圍著他舍不得分開,這是一位讓人愿意親近的長者、前輩和大師。筆者將他的印象總結為三點:終身編程、開源信徒、語言大師。
終身編程
Anders 現在每天仍然花大量的時間實際寫代碼,并且未來會一直寫下去。他很清醒的知道自己長處:“相比起管理,我還是更擅長于編程。”
事實上,Anders 的成名之作 Turbo Pascal 通過出售軟件授權就讓他獲得了大量財富,之后微軟高薪聘請更讓他衣食無憂,Anders 不僅僅是可以轉管理——只要他開口,微軟有很多的職位在等著他——他甚至可以什么都不用做,但他仍然堅持編程,因為這是他的興趣和激情所在。
對于他如何能達到現在的成就,他表示,10000 小時定律和興趣是很重要的因素,編程是一項需要時間來掌握的技能,Anders 說,他回憶一下,的確是花了這么長時間才真正掌握編程,而另一方面,興趣也是非常重要的,如果有兩個工作,一個給的多些,另一個給的少些,但是是你感興趣的事業,Anders 建議選感興趣的那個。
國內有不少資深程序員在工作一段時間之后都轉了管理,但仍對編程難以忘懷,了解 Anders 的生平和想法,想必會有所啟發。
開源信徒
Anders 對開源精神的認同和身體力行讓人驚訝,他現在在 Github 上每天要提交十多次代碼,很難想象他來自微軟,當然,微軟現在其實也在擁抱開源,并且這其中也有 Anders 的努力。
微軟自 Satya Nadella(薩提亞·納德拉)擔任 CEO 后,開始融入社區,向開發者示好,其中的重要舉措就是開源,Anders 是其背后的推動力量之一。不僅他之前參與的 .NET 核心引擎 CoreCLR 開源,現在的 TypeScript 也徹底是由社區主導的開源項目,微軟并不干涉 TypeScript 的發展方向,所有決策都由社區得出。
在 Anders 的分享里,他總結微軟現在的開源戰略:
- 新開發項目首選開源
- 創立 .NET 基金會管理開源項目
- 開源+開放開發,使用并依賴 Github
- 跨平臺開發工具,典型的如 Visual Studio Code </ul>
- 極簡:Anders 喜歡簡單(simplicity),除非必要,否則不添加語言特性,一個好的語言特性是它必須的最小集。
- 設計存活時間更長的語言:有些編程語言隨著時間流逝不再流行,但有些語言如C語言,幾十年過去了仍然被很多人使用,語言與趨勢(如移動互聯網、物聯網)無關,語言設計者的目標是設計存活更長時間的語言。
- 困難即美味:記者問到 Anders 對 JavaScript 語言的看法,他認為 JavaScript 在設計上有諸多問題,但仍然有其優點,更重要的是,用戶很多,并且難以被替代。至于 Anders 為何會選擇修補 JavaScript,他認為這對他是一項挑戰,以前沒有人做過,解決這一問題對他就像美味一般。 </ul>
Anders 認為開源是軟件開發的趨勢,現在如果你的軟件不是開源的,開發者可能更愿意選擇別的開源的解決方案。
語言大師
Anders 在語言設計、開發工具、編譯器等諸多領域都有非常深厚的功底,這為他設計出 C# 語言打下了基礎,C#語言被公認為設計非常優秀的語言,作為它的創造者,Anders 毫無疑問是一位語言設計的大師。在現場他分享了一些對編程語言的看法:
TypeScript:大 JS 生態圈的一環
TypeScript 最近發布了 1.6 版本,它在社區里的接受度也越來越高,比如有人從 CoffeeScript 遷移到 TypeScript,也有人認為它比 非死book 的 Flow 更好。這一切都要歸功于 Anders 為 TypeScript 帶來的優秀設計。
Anders 分享道,其實 TypeScript 做的并不多。它的兩大特性,第一個給 JavaScript 加上可選的類型系統,Anders 表示,很多事情是只有靜態類型才能做的,給 JavaScript 加上靜態類型后,就能將調試從運行期提前到編碼期,諸如類型檢查、越界檢查這樣的功能才能真正發揮作用。在 Anders 現場的演示可以看到,TypeScript 的開發體驗的確遠遠超過以往純 JavaScript 的開發體驗,無需運行程序即可修復潛在 bug。
另一個特性是支持未來的 ES 6 甚至 ES 7,最近的更新都與此有關。在 TypeScript 中,你可以直接使用 ES 6 的最新特性,在編譯時它會自動編譯到 ES 3 或 ES 5,這個功能和最近流行的 Babel 類似,事實上,Anders 認為 TypeScript 的競爭對手并非 Dart、CoffeeScript 這類語言,而是 Babel,不過 TypeScript 的類型系統是 Babel 無法做到的,Babel 也僅是一個編譯工具,無法提供更好的開發體驗。
在問到對 TypeScript 將來的規劃時,Anders 顯得很克制。TypeScript 不追求替代 JavaScript,沒有計劃直接運行在瀏覽器、系統里,它僅僅關注在編譯到 JavaScript 之前的事情,編譯之后的事情,諸如 JavaScript 性能調優等等,并不關心。
Anders 表示,TypeScript 最大的目的是讓程序員更具創造性,提高生產力,它將極大的增強 JavaScript 編寫應用的開發和調試環節,讓 JavaScript 能夠方便用于編寫大型應用,進行多人協作。
這種定位讓 TypeScript 能更輕松的被 JS 程序員所接受,除了上面提到社區的反應,最知名的還要數 Google 采用 TypeScript 來開發其 Angular 2 框架,Google 和微軟甚至為此第一次聯合召開發布會。在國內,也有 HTML5 游戲引擎 Egret 使用 TypeScript 進行開發。由此可見,TypeScript 已經足夠可用,甚至進入大公司的生產環境。
當然,最后讓人推薦 TypeScript 的原因,還有 Anders 本身,有如此大牛帶領,相信這門語言正走在正確的道路上,它的未來不可限量。