Microsoft之逆襲
2020-06-09
2018年年底,微軟公司首次在近年來超越蘋果公司,成為全球市值最高的公司,價值超過8000億美元。時間快轉至筆者動筆寫這篇文章的今天(2020年6月),微軟依然是全球市值最高,市值高達1兆4000億美元,實在只能用天文數字來形容。
如果你不是從事資訊科技行業,你可能覺得一頭霧水,Microsoft近年在普通消費者眼中好像乏善足陳: Windows 10 變成每半年小更新旳操作系統,Windows 11 似乎永遠不會面世;Microsoft Office 也沒有大更動,基本上打開Microsoft Office 2019,整體感覺與Microsoft Office 2016分別不大,縱使不是專業投資者都會知道,科技公司的價值取決於創新,那Microsoft的創新在那裏呢?
這一切改變,筆者認為與Microsoft 新任CEO Satya Nadella於2014年上任有莫大關係。在他上任之前,Microsoft正在努力以Windows Phone
打入智能電話市場,大家現在都知道成效不彰。而那時在開發者的世界,Microsoft就是反開源軟件(Anti open-source)的代名詞,前任CEO Steve Ballmer更曾於2001發表Linux is Cancer
般令人震驚的評論。而正由於對開源開發之不友善,當時要在Windows上使用主流的開源程式語言,例如Node.js
、Python
、Java
等,在開發者體驗(Developer Experience)上都比在類Unix 系統(Mac及Linux)上遜色不少,以Windows 開發網頁應用、手機應用,變成了一件吃力不討好的事情。這些事情都令當時微軟流失了大量使用Windows之開發者。
流失開發者對一間科技公司來說,是一個沉重打擊。大家身邊的開發者,往往都是新科技的嘗鮮派,想像一下:如果你的IT朋友千叮萬囑叫你不要使用Windows,你也不期然會考慮再三。順帶一提,依筆者之個人記憶,開發者不使用Windows之迷思也正是在此時出現,有興趣的朋友,可以閱讀筆者以前寫過的破除迷思系列:高手一定唔用Windows?一文。
逆襲
那Satya Nadella
如何應對這個困境呢?當然微軟內部的策略筆者無從得知:而筆者作為一個局外人,觀察到一個很簡單的原則:
贏回開發者歡心,就能逆轉劣勢
Satya
上任不久的2015年,竟然出現了令人更震驚的Microsoft loves linux一文,由Linux is Cancer
轉為Microsoft loves linux
,可說是180度的改變。具體措拖是怎樣呢?Microsoft 由這時開始,開始全方位逆襲。
VSCode
Visual Studio Code 可說是Microsoft逆襲的第一步,VSCode 在2015年推出,當時市場上有幾個輕量的編輯器: 包括Sublime Text、Github Atom、還有Bracket等。這幾個編輯器比起之前的編輯器(例如NotePad++),都有很大的進步,但也各自有自己的問題。Sublime Text
價格不菲,試用版每儲存5次就會出現提示購買訊息; Github Atom
太笨重,速度太慢; Bracket
的目標用戶比較像是設計師,而非開發者。 VS Code
正好填補了這個市場上的空位: 速度快、自由開源、以開發者為主要目標用戶。
VS Code
更加入了常用的Git及Debugger,對開發者而言非常方便,無須像在Sublime Text
及Github Atom
中需要自行安裝。因此,在2019 StackOverflow 開發者調查中,Visual Studio Code 蟬聯最受歡迎的開發工具。筆者寫這篇文章的工具,也正正是Visual Studio Code
。
TypeScript
TypeScript 推出的時間很早,2012年已經推出了第一個版本,那時正是Node.js
熱潮,TypeScript
沒有在當時得到太多注目,直至數年後,前端應用框架React
、Angular
、Vue.js
相繼面世,開發者在開發複雜單頁應用(Single Page Application)時,發覺隨著軟件的程式碼數量增多,維護成本就愈高,原因正是JavaScript
本身是一種動態弱型別(Dynamic and weak)的程式語言,非常靈活易寫,卻不利可讀性。與之相比,TypeScript包含了JavaScript之靈活及靜態語言之嚴謹,使之更適合大專案之維護。
Facebook
為了維護大型React
專案,也開發了一個名為Flow的型別檢查程式庫,不過由於TypeScript
愈來愈受歡迎,因此React也正式支援了TypeScript
,並於官方網站推介作為加入靜態型別的方法之一。
而TypeScript
同時廣受弱型別(Weak Typing)及強型別(Strong Typing)的開發者所喜愛,在最新2020 StackOverflow survey 的調查,TypeScript
為第二最受喜愛程式語言,僅排在Rust
之後。
Windows Subsystem for Linux(WSL)
2016年中,微軟宣佈推出一個名為Window Subsystem for Linux(WSL)的子系統,能令開發者在一個Windows的環境之中,運行一個Linux
的環境。這對很多開發者而言是天大的喜訊,因為Windows
長久以來都欠缺一個與Unix
通用的Command Line
環境。固然有像Cygwin
或Babun
這樣專案去模擬一個Command Line
環境,但與一個真正的類Unix
環境相去甚遠。 因此微軟與著名Linux發行版Ubuntu
的母公司Canonical
合作,在Windows 10
之中提供一個名為Bash on Ubuntu on Windows
旳系統。這一步令使用Windows
的開發者,可以不用虛擬機器的情況下,就可以直接使用原本只能在Linux
使用的套件。
WSL
令Windows 同時得到Windows
及Linux
的各自好處:既有良好的桌面軟件支援(Linux不支援Adobe的軟件),也有良好的Command Line
支援,集合了兩家的優勢( Best of both world),因此受不少開發者所喜愛。 而由於雲端世界絕大多數使用Linux
,所以WSL
也方便了不少DevOps工程師管理雲端VM。WSL 2.0 更包含了一個真正的Linux 核心(Linux Kernel),因此加上了WSL2.0 的Windows 10,會同時包含Windows NT 核心及Linux 核心,成為了名符其實一個「雙核心操作系統」。由以下的圖表,可見在新WSL的架構之中,Linux 是真正在一個VM之中運行,但在資源佔用方面卻比普通VM要少得多。
.Net Core
長久而來,微軟在伺服器市場都有一席之地,然而大多數微軟的程式語言、工具、程式庫,都是專為Microsoft Windows Server 而設,基本上你要使用任何微軟開發的工具: 例如.Net Framework
、Visual Studio
、SQL Server
,你就必須要使用Windows Server,別無其他選擇。但隨著近年Containerization 發展浪潮之下,Linux 操作系統佔了雲端部署絕大多數(例如Amazon Web Service 上有90%是Linux VM),結果導致微軟不但在Server 操作系統上馬失前蹄,連帶其他工具,都由於無法在Linux 上使用,而失去了不少市場份額。
因此微軟將程式語言、開發工具、程式庫等與Windows 分開發展,在2016年6月推出了.NET Core
,.NET Framework
一向深受Windows
開發者歡迎,包括了非常受歡迎的C#
、ASP.Net
、F#
等程式語言。.Net Core
在Windows
、MacOS
、Linux
上皆可運行,連帶SQL Server
亦一樣可在三個主流平台上運行,大大擴充了潛在開發者之市場,不會再僅限於Windows Server
開發者。
微軟在.Net Core
上之意圖尤其明顯,就為了重新搶佔伺服器開發中被Java
及Node.js
奪走了的不少市場,智能電話開發亦加入了新成員Blazor
去搶佔跨平台應用開發之市場,與React Native
、Flutter
決一高下。
2020年4月,Microsoft更推出了.Net 5
,留意名字裏沒有Core
或Framework
,代表Microsoft已徹底向跨平台開發進發,即使在Windows Server
的市場份額未如理想,亦要在未來雲端開發、物聯網開發中佔一席之地。
Github
2018年6月,Microsoft向全球最受歡迎的開源程式碼儲存網站Github提出收購。這個消息還在當時引起不少開源開發者的逃亡潮,原因當然是因為微軟一直以來打擊開源軟件的形象。結果在併購完成後,Github 將免費的private repository 由三個提升至無限制。因此證明了微軟在對開源軟件的策略已有翻天覆地的變化,完全是名言If you can't beat them, join them.
的最佳實踐。
2018年10月,更推出了名為Github Action
的CI/CD工具,Github的主要競爭對手Gitlab
正是以優質的CI/CD
工具而聞名,此舉明顯是為了保持Github的龍頭地位。
總結
微軟在90年代的成功,令微軟在千禧第一個十年時錯過開源開發(Open source development )、網頁應用(Web Application)、智能電話應用(Smartphone application)的發展,而錯失了第一個十年後,又在第二個十年急起直追,在不少領域重新領先,筆者看來,這正代表創新者必須與時俱進,一成不變的話則必然受時代淘汰了。
Comments
Read More
學術探討系列:型別推論(一) Type inference(I)
2018-11-08
本篇是學術探討系列的第一篇,與先前不同的是內容上會以純粹學術角度集中探討一些題目,打響頭炮的將會是關於型別推論(Type inference)。歡迎大家留言建議一些題目啊。
四個原因令Linux更適合作Server
2018-12-08
在Tecky Academy教學中,間中會有同學問:「點解唔用Microsoft Windows做Server?用Linux有咩好處?」 誠然,於消費者電腦(不計算智能電話) 市場中,Windows有七成市佔率,Mac佔了一成,Linux只有可憐的一個百分比。為何在伺服器的市場上,卻是反而Linux占有約六成,擁有最大的市場份額呢?
Excel病特效藥:Office JavaScript API
2019-04-08
有留意本站博客的朋友,可能看過有一種病叫Excel病這篇文章,都知道筆者絕不贊同亂用Excel作程式用途,因為Excel本身作為試算表,最適合作財務計算,或以數據生成圖表等功用。作為程式用途,則困難重重,舉一簡單例子,要在Javascript,顯示出1至10000的所有數字,是一個編程ABC的問題,程式初哥亦能輕易解決。
科技會過時?
2019-04-18
不諳編程或是編程初學者常常會有一個印象:就是資訊科技發展很快,一種最新技術可能數年又會變得「不再流行」,又時時會有一些新穎的科技流行語(Buzzword),早幾年是雲端、大數據,過了一會又是數據科學、人工智能、現在又出現了所謂的區塊鏈技術。編程初學者,在沒有先前經驗的情況下,往往無所適從,不知如何是好。