成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

VS Code 這么牛,再次印證了一句名言

開發 前端
Monaco是用JavaScript編寫,而JavaScript是一門匆忙設計出來的語言,其中一些特性在代碼庫變大的時候很容易讓人抓狂。

?2011年,50歲的Eric Gamma 從IBM跳槽到微軟。

那一年我正好在IBM,還是IBM的百年大慶,看到這個消息,非常失望,這么一位大牛,《設計模式》的作者,JUnit的作者,Eclipse JDT架構師,程序員界的標桿性人物,IBM沒有留住他,實在是太可惜了。

圖片

當時Eclipse風頭正盛,IDEA還沒有現在這么火,Eric Gamma突然跳槽,這挺讓人費解。

后來得知,他加入了Visual Studio團隊,從事的是online developer tooling,就是讓程序員可以在瀏覽器中寫代碼。

這一次,50歲的Eric Gamma,相當于拋棄之前所有的成就和榮譽,重新創業了。

1.創業起步

可能很多人并不知道Eric Gamma一直以來都是遠離IT的中心美國,在瑞士的蘇黎世,領導著一個小而強悍的團隊工作。

圖片

(風景如畫的蘇黎世)

他的小團隊馬上要面對一個最大的問題:我們的產品是什么? 

如果沒有產出,去哪里獲取進一步的投資?

資本就是這么現實,Eric Gamma你再牛,沒有產品說話,也是混不下去的。

他們的第一個產品就是 Monaco Editor,一個Web版本的編輯器。

這個編輯器利用了HTML5的技術,支持語法高亮,智能提示。

Eric Gamma還做了一個重要的決定:不使用任何UI Framework,盡可能地接近最底層的DOM。

圖片

因為他認為性能非常重要,完全控制自己的命運更加重要。 

于是,Monaco Editor 就這么完全從零開始,一行一行地發展起來。

一切從頭來過,嗯,牛人就是牛人。 

對項目名稱,老外好像特別喜歡用地名,例如摩納哥(Monaco),雅加達(Jakarta),爪哇(Java),我在IBM的時候也遇到過,明明是個電子商務系統,非要叫個意大利的地名:塔司科尼。

誰要是知道原因的話,不妨在下面留個言。 

產品出來了,自然要找客戶。

Monaco的第一個客戶是 微軟云Azure ,隨后也被嵌入到了各種各樣的產品中。

可以這么說,這個創業公司生存沒問題,接下來就是怎么發展了。

2.遭遇滑鐵盧

初戰告捷,勝利沖昏了團隊的頭腦:為什么不把它變成一個Web IDE呢?把日常開發的所有內容都搬到瀏覽器中。 

于是,他們把Monaco Editor改造成了Monaco Workbench ,一個單詞的變化,一下子就高大上起來。

他們搭建了本地的服務器,開始吃自己的狗糧,使用Monaco Workbench來開發Monaco Workbench。 

圖片

Monaco是用JavaScript編寫,而JavaScript是一門匆忙設計出來的語言,其中一些特性在代碼庫變大的時候很容易讓人抓狂。

即使Erich Gamma的團隊編程水平很高,他們也會遇到一個動態語言的終極問題:動態一時爽,重構火葬場。

幸運的是,微軟的另外一個大神Anders創造了一門叫做TypeScript的語言,完美地解決了這個問題。

(Anders的故事參見 《一個養活了四代程序員的男人?》)

圖片

從這幅圖中可以看出,Monaco并不是推倒重來,而是漸進式地采用TypeScript。

2013年,他們發布了Visual Studio Online Monaco(這個名字實在是太長了), 具備代碼瀏覽,和Git集成,搜索代碼等功能,界面和后來的VS Code已經非常像了。 

圖片

界面看起來很酷,但是殘酷的現實是:這個產品每個月只有3000活躍用戶。

對于微軟這么一個巨無霸來說,產品用戶以億級計數,這實在是太尷尬了。

在線的IDE,這樣的產品理念在2013年可能是太超前了。

這中間還發展了一個趣事,摩納哥(Monaco)王國寫了一封信,說他們不喜歡這個產品的名字(有他們的國家名在其中),后來Erich Gamma他們只好加了一個引號 Visual Studio Online “Monaco”

圖片

是不是很奇怪,為什么一定要把Monaco這個地名放到一個程序員用的產品中呢?叫Visual Studio Online 不行嗎?

3.轉折

Erich Gamma的團隊面臨著一個經典的創業公司挑戰:如何獲得十倍,百倍的用戶增長?

從哪里獲得用戶呢? 

是繼續砸錢在程序員社區做推廣,還是轉向別的方向?

這時候大環境發生了變化,新CEO納德拉上臺,微軟開始擁抱開源,為了吸引更多程序員,微軟的產品要從運行在Windows上,變成跨平臺運行。

圖片

Erich Gamma看到機會,也發現了一個新的用戶群體:為Web開發而生的程序員。

這個群體在開發中會使用很多語言,很多開發工具,有很多不同的運行時環境,天生有跨平臺的需求。

但是Web程序員是喜歡Editor 還是IDE呢? 

Erich Gamma決定選擇中間部分。

圖片

Web版沒人用,那就開發一個桌面版吧,但是從頭兒開發代價太高。 

幸運的是,當時存在著一個叫做Electron的技術,通過使用使用Node.js(作為后端)和Chromium的渲染引擎(作為前端),讓JavaScript可以運行在桌面端。 

圖片

通過Electron的包裝,Visual Studio Online "Monaco" 這個Web Workbench搖身一變,成了桌面"IDE",并且是跨平臺的。

2015年5月,發布 VS Code (終于不再有地名了), 團隊做了一個很酷的Demo:在Linux上調試.NET程序,一下子引起了轟動。

VS Code 從此進入了發展的快車道。 

4.創新致勝

如果到此打住的話,VS Code充其量也只是個好一點的編輯器。

想捕獲程序員的芳心,不拿出來些干貨是不行的。

  • 開源

群眾的呼聲很高,微軟和Erich Gamma 團隊也順勢而為,開源VS Code。

放到GitHub之前,團隊仔細地Review了代碼,把它弄得干干凈凈。

無論是誰,都擔心自己的代碼被噴啊。 

  • 擴展

大家試用了VS Code以后,提出的最大建議就是:要支持擴展,支持插件。

這不正是Erich Gamma 擅長的嗎!他在Eclipse搞了10多年的擴展了!

但Erich非常清楚,擴展是好東西,但是也可能會傷害你,它會嚴重地拖慢你的IDE。

有了之前的慘痛教訓, 團隊決定,擴展要在一個獨立的進程中運行(是不是讓你想到了Chrome?)

VS Code核心通過RPC和擴展進行交互,這樣即使擴展崩潰了, VS Code核心也不會受到影響。

圖片

  •  LSP

Web開發通常使用多種語言,用JavaScript寫前端,用Java寫后端,還可能用Python搞點兒腳本啥的。

這么多語言,如何在一個編輯器中對它們支持智能的感知呢?

例如:

用戶點擊了某個函數名,點擊“Go to Definition”,就應該跳到函數定義。

用戶把鼠標放到某個類名上,應該顯示相關定義和文檔。

......

Erich Gamma再次發揮了他大師級的抽象能力,把用戶在編輯時最常用的操作,如打開文件、編輯文檔,Goto Definition等抽象出來,定義出一套協議:LSP(Language Server Protocol)。

VS Code不用理解語言的特性,不用考慮抽象語法樹,非常輕量級.

編程語言,Java也好,Python也罷,不用考慮IDE,只要有個對應的Language Server實現了這套協議,就可以和VS Code進行交互。

圖片

圖片

LSP協議在短短幾年內取得了空前的成功,現在已經有了來自微軟以及社區的一百個實現,基本覆蓋了所有主流編程語言。

4. VS Code Remote

VS Code Remote 讓程序員可以在遠程環境(比如虛機、容器)里開一個VS Code工作區,然后用本地的VS Code連上去工作。

圖片

在這些創新特性的加持下,VS Code 迅速攻城掠地,開始爆炸式發展,成為廣大開發者的必備神器。

5.回歸初心

不要忘了Erich Gamma的最初目標:online developer tooling,讓程序員在瀏覽器中寫代碼。

經過艱苦的奮斗,現在終于可以回歸初心:瀏覽器中的VS Code

圖片

由于VS Code良好的架構,使得它向Web的遷移比較容易,主要的改變是UI層。

原來是依賴Electron 做UI, 現在轉向Web,需要再次重構代碼,做出抽象。

例如原來有Electron的對話框,現在需要抽象出Dialog,給出HTML Dialog的實現。

但是,程序員真的會適應純Web的編輯器,在瀏覽器中編程嗎?大家可以在留言區討論下。 

這里有一些統計數字,大家可以看下,每月的活躍用戶達到了1400萬,28k個插件,LSP Server都有138個。

圖片

尤其是那10萬的issue,格外耀眼,讓人非常震撼,一個好的產品真的是靠不斷打磨出來的。

十年過去了,一個完整的社區成形, 60歲的Erich Gamma創業成功!

6.總結

看完這段歷史,你可能會覺得,Erich Gamma實在太牛了,干啥都能成。

其實并不是這樣,在他離開IBM之前, 曾經做過一個叫做Jazz的項目,Jazz試圖把團隊協作,特別是敏捷軟件開發的流程搬到IDE這樣的開發工具中,和代碼無縫集成,但是除了IBM內部的人,恐怕了解Jazz的并不多,這個項目并沒有在業界掀起多大的波瀾。

?如果要總結的話,還是那句老話:運氣,從來都是給有實力的,準備好的人。 

TypeScript、Electron、微軟轉型看起來都是VS Code的重要助力和運氣,但是如果沒有最早的摩納哥Editor,沒有Erich Gamma迅速轉型的勇氣,沒有后續的一系列創新,VS Code走不到今天。

參考資料:

本文大部分內容和圖片的來源于Erich Gamma的演講:《VS Code an Overnight Success… 10 years in the making》https://www.youtube.com/watch?v=hilznKQij7A?

責任編輯:武曉燕 來源: 碼農翻身
相關推薦

2011-03-28 15:48:52

批量數據綁定

2011-03-24 10:24:45

批量數據綁定

2009-03-10 18:10:12

LinuxUbuntu技巧

2012-02-09 09:41:22

2013-03-22 10:53:42

PyConPython

2011-06-13 09:25:01

斷號

2015-08-03 10:21:04

設計模式表達

2020-11-27 09:57:11

Python代碼PyPy

2023-12-10 14:28:58

VS Code軟件開發代碼編輯器

2021-09-09 21:10:23

Lite-XL編輯器Lua

2024-03-28 07:46:56

VS Code插件TypeScript

2023-11-06 08:31:58

業務代碼多線程

2019-11-15 18:00:18

MySQLSQL數據庫

2013-05-10 10:56:09

2021-12-17 08:55:26

Python微博機器人

2023-07-12 08:01:28

FOADMROADMOXC

2023-09-05 23:34:52

Kubernetes云原生

2022-06-02 08:03:19

PyCharmPython代碼

2020-12-28 15:20:31

新華三集群路由器

2021-02-02 13:31:34

新基建新華三路由器
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产色在线 | 国产午夜精品视频 | 亚洲国产aⅴ成人精品无吗 欧美激情欧美激情在线五月 | 国产欧美精品一区二区色综合 | 超碰免费观看 | 国产精品视频久久久 | 国产成人精品久久二区二区91 | 午夜久久久久久久久久一区二区 | 亚洲毛片 | 激情三区| 亚洲精品无| 亚洲av一级毛片 | 成人精品一区二区三区中文字幕 | 久草网址| 久久伊人一区二区 | 国户精品久久久久久久久久久不卡 | 婷婷色婷婷 | 亚洲国产成人久久久 | 青青草一区| av不卡一区 | 亚洲高清在线观看 | 91精品久久久久久久久久小网站 | 欧美在线视频一区二区 | 国产精品一区二区三区在线 | 一级毛片视频在线 | 免费成人在线网站 | 国产精品大片在线观看 | 在线视频一区二区 | 日韩在线视频网址 | 国产精品福利视频 | 亚洲成人国产精品 | 91超碰在线观看 | 欧美日韩成人在线观看 | 日韩色在线 | 久久艹免费视频 | 亚洲精品国产精品国自产在线 | 午夜精品一区二区三区在线视 | 97精品久久 | 国产黄视频在线播放 | 毛片视频免费观看 | 欧美视频在线看 |