孫悟空和Web爭(zhēng)霸
小李飛刀李尋歡的孫子叫李壞,世間絕頂高手。但在一個(gè)夜晚,他癡癡地看著一把飛刀像一道美妙的月光插進(jìn)自己的左胸?!?《飛刀又見(jiàn)飛刀》
上篇我們聊鴻蒙(鏈接)的時(shí)候,花了很大篇幅說(shuō)方舟。那么這個(gè)思路到底對(duì)不對(duì)呢?做過(guò)學(xué)術(shù)的人都知道,什么想法都是你第一個(gè)那是很難的。我們看看業(yè)界有沒(méi)有類(lèi)似的嘗試。
有個(gè)叫FireMonkey的東東實(shí)現(xiàn)過(guò)類(lèi)似方舟的理念,而且Win/Mac/iOS/Android統(tǒng)統(tǒng)支持。這個(gè)可以翻譯成“孫悟空”的玩意兒,正是現(xiàn)在Delphi的一部分。
從Windows 11看,微軟除了支持傳統(tǒng)的Win32、.NET程序外,還支持Web程序PWA和安卓App 。再看最新發(fā)布的Windows365,整個(gè)操作系統(tǒng)都可以作為SaaS在瀏覽器里跑。
各種平臺(tái)的邊界開(kāi)始變得模糊,硬件架構(gòu)的鴻溝逐漸被各種編譯器翻譯器填平。
本文按慣例扯亂一點(diǎn),順便續(xù)寫(xiě)一下《程序員之神》(鏈接),即Anders Hejlsberg以外的那些諸神故事。閱讀下去的前提,是知道Anders是誰(shuí),那個(gè)代碼飛刀例不虛發(fā)的神。“孫悟空”的事兒,我們?cè)谖恼潞竺嬖倭摹?/span>
一、Delphi從崛起到衰落
很多人說(shuō)Anders離開(kāi)是Borland衰落的原因,但這絕對(duì)是夸大了。重量級(jí)的Delphi3研發(fā),Anders并未主要參與。Anders在Delphi發(fā)布一年后的1996年就去微軟了,Delphi由其最重要的戰(zhàn)友Chuck Jazdzewski領(lǐng)導(dǎo)到2004年,所以Chuck應(yīng)該算第一功臣。
從1995年以后的七八年時(shí)間,Delphi一直給微軟Visual Studio強(qiáng)大的壓力。張小龍也在那期間用Delphi開(kāi)發(fā)Foxmail一戰(zhàn)揚(yáng)名,后來(lái)他用Web技術(shù)做了郵箱、微信、還有小程序和諸神匯合,我們暫且不表。有個(gè)小八卦的是,據(jù)說(shuō)“Fox”是致敬令狐沖。
微軟Windows的新版本總是給Borland沉重打擊。如同OLE導(dǎo)致Borland C++敗北,.NET使得Delphi跟不上腳步,畢竟Borland沒(méi)有那么多資源做復(fù)雜的升級(jí)。
尤其在那時(shí),Java的重要性已經(jīng)明顯超過(guò)了Windows原生程序開(kāi)發(fā),Delphi在Borland內(nèi)部逐漸失寵。
二、Blake、Chuck和Danny(BCD)
上世紀(jì)末,Borland集中火力在JBuilder上,立Java奇才Blake Stone為CTO,據(jù)說(shuō)這導(dǎo)致了Chuck離職去微軟。Danny Thorpe接管了Delphi任總架構(gòu)師。
Danny本身是個(gè)勵(lì)志故事。他加入Borland時(shí)只是個(gè)助理測(cè)試員而且做了5年測(cè)試,但很幸運(yùn)他是給Anders和Chuck做測(cè)試。
這告訴我們崗位不重要,和誰(shuí)在一起更重要。
喜歡自己燒瓷碗的Danny說(shuō)自己在Delphi 5的時(shí)候才開(kāi)始去看編譯器,傳說(shuō)那時(shí)沒(méi)人敢動(dòng)Anders的代碼。而Chuck的早期主要工作是VCL組件,“組件”正是Delphi震動(dòng)天下的殺器,也引發(fā)了后來(lái)Java、C#等后來(lái)開(kāi)發(fā)工具的模仿。
三、從JBuilder到VS Code
得益于Blake Stone的勇氣,JBuilder相當(dāng)于是用Java重寫(xiě)的Delphi,這使Java程序更純正兼容。在微軟Visual J++提前出局的情況下,Borland JBuilder不負(fù)所望擊敗了幾乎所有對(duì)手,包括IBM VisualAge for Java。
在2001年IBM接受了失敗,把VisualAge for Java轉(zhuǎn)給開(kāi)源的Eclipse。一位遠(yuǎn)在瑞士的軟件工程神級(jí)人物Erich Gamma加入了Eclipse團(tuán)隊(duì),隨后翻盤(pán)戰(zhàn)勝了JBuilder。
聰明的微軟挖走了Blake Stone,無(wú)心戀戰(zhàn)的Borland隨后賣(mài)掉了IDE產(chǎn)品線。
遠(yuǎn)在捷克的IntelliJ趁機(jī)靠著專(zhuān)注于不斷優(yōu)化IDEA等產(chǎn)品走出商業(yè)IDE的成功之路。IntelliJ(現(xiàn)在叫JetBrains)是三個(gè)俄羅斯程序員在互聯(lián)網(wǎng)泡沫破滅時(shí)創(chuàng)建的。厲害的是,這幾位創(chuàng)始人一直拒絕外部投資和上市,這使他們避免了Borland的覆轍。
財(cái)大氣粗的微軟再?gòu)腎BM把Erich Gamma挖走(湊齊了ABCDE五顆龍珠?),而且許諾Erich仍在瑞士工作而且自建團(tuán)隊(duì)。Erich則再次完成了自我顛覆,用Web技術(shù)(Electron)為基礎(chǔ)打造出另一神作VS Code。
我們以前提到過(guò)貝索斯允許Chris Pinkham在南非工作做出AWS EC2,Anders遠(yuǎn)在丹麥給Philippe Kahn工作,加上張小龍保持和Pony Ma的距離。這些故事告訴我們:如果你真心牛,可以勇敢要求老板讓你夏天在麗江、冬天在三亞工作。
四、Web再聚首
VS Code的設(shè)計(jì)思想完全和Visual Studio不同,Web技術(shù)驅(qū)動(dòng)是其核心,我們也能看到Web技術(shù)成為開(kāi)發(fā)工具大神們?cè)俅闻鲎驳母?jìng)技場(chǎng)。
Chuck和Danny加入微軟后在Windows Live團(tuán)隊(duì)合作過(guò),但微軟社交產(chǎn)品并不成功,兩人后來(lái)又離開(kāi)了。
Chuck目前在Google工作,在轉(zhuǎn)到安卓前端做Jetpack Compose之前,Chuck參與的工作居然是和Anders的TypeScript配合打造Angular 2。
Angular反過(guò)來(lái)也促進(jìn)了TypeScript的發(fā)展。
Angular的競(jìng)爭(zhēng)對(duì)手是Facebook陣營(yíng)的React和后來(lái)以中國(guó)陣營(yíng)為主的Vue。加上VS Code,程序員的大神們?cè)俅尉凼住?/span>
Vue的作者尤雨溪也出身Google。他是一個(gè)閃耀的例子,顯示了中國(guó)強(qiáng)大以后,在新一代衣食無(wú)憂的情況下,也會(huì)像歐洲那樣產(chǎn)生因愛(ài)好而在編程界封神的情況。
五、Borland為什么失敗
Borland的ABCD四位大神都被微軟挖走,Delphi也最終被賣(mài)掉。
Danny在Quora上曾經(jīng)回答B(yǎng)orland為什么會(huì)失敗:他認(rèn)為Borland的管理層想從百萬(wàn)量級(jí)的程序員客戶(hù)轉(zhuǎn)到少數(shù)量高收入的企業(yè)級(jí)客戶(hù),方向上出了問(wèn)題。而B(niǎo)orland被董事會(huì)踢出局的傳奇創(chuàng)始人Philippe Kahn點(diǎn)了贊,Kahn認(rèn)為Borland應(yīng)該把目標(biāo)放到億萬(wàn)用戶(hù)的桌面應(yīng)用上。
Kahn出身是逃到法國(guó)的猶太家庭,他到美國(guó)淘金時(shí)沒(méi)綠卡也沒(méi)工作(相當(dāng)于半非法移民),就自己開(kāi)了公司雇了自己。Kahn在瑞士ETH上大學(xué)時(shí)老師是Pascal語(yǔ)言的發(fā)明人Niklaus Wirth,這使他對(duì)Anders的Pascal編譯器慧眼識(shí)珠。
Kahn是最早采用高質(zhì)量軟件定價(jià)很便宜策略的企業(yè)家,Borland的產(chǎn)品大都是迅速搶占了市場(chǎng)。在Delphi誕生前,Borland曾在多個(gè)戰(zhàn)線和巨頭們開(kāi)戰(zhàn)。
Borland的dBase數(shù)據(jù)庫(kù)直接挑戰(zhàn)微軟的Access和ForPro。Borland的Quattro Pro和Lotus 1-2-3的法律大戰(zhàn)直打到聯(lián)邦最高法院并罕見(jiàn)地4:4戰(zhàn)平,結(jié)果微軟的Excel漁翁得利。
作為曾經(jīng)單挑比爾蓋茨的一代梟雄,Kahn此后仍執(zhí)著于觸達(dá)最終用戶(hù)的應(yīng)用而與Web漸行漸遠(yuǎn),乃至流于平庸。
六、孫悟空和Xamarin
Borland把Delphi等開(kāi)發(fā)工具賣(mài)給Embarcadero以后,新主人在隨后十三年居然做到了一年一更新。
十年前的Delphi XE2中開(kāi)始出現(xiàn)了FireMonkey(孫悟空),它實(shí)現(xiàn)原生代碼的跨平臺(tái),就是用一套Pascal代碼編譯就可以在蘋(píng)果和安卓甚至Windows上跑。但每一個(gè)App都要內(nèi)嵌一套FireMonkey runtime。
FireMonkey和方舟一樣證明了靜態(tài)編譯在技術(shù)上是可行的。但是FireMonkey是否能靈活對(duì)付不同的屏幕尺寸和各種兼容性問(wèn)題,甚至靜態(tài)編譯是否有意義,仍是充滿爭(zhēng)議的。方舟倒是有個(gè)FireMonkey無(wú)法具備的優(yōu)勢(shì),就是可以提前把runtime內(nèi)置到鴻蒙里,這樣啟動(dòng)App速度能快很多。
微軟為了讓.NET可以侵入安卓、iOS包括Linux等,有個(gè)有點(diǎn)像FireMonkey的東西叫Xamarin。用這個(gè)東西不需要會(huì)Java,只要會(huì)C#也能編安卓App。Xamarin和FireMonkey或者方舟的區(qū)別在于,它更像個(gè)即時(shí)語(yǔ)言翻譯器。
Xamarin由Nat Friedman和一個(gè)墨西哥兄弟Miguel de Icaza搞的,之前叫Mono。這倆老兄也不是一般人,Nat Friedman目前是GitHub的CEO;Miguel是大名鼎鼎的GNOME的創(chuàng)始人之一,而在2014年Anders宣布.NET Core開(kāi)源時(shí),Miguel就站在旁邊,并受任.NET基金會(huì)第一任董事。
七、融合
天下大勢(shì)合久必分,分久必合。在多種語(yǔ)言多種平臺(tái)百花齊放后,Web技術(shù)逐漸眾神匯聚的地方,也給我們帶來(lái)更多的細(xì)分領(lǐng)域:PWA、AMP、SPA、WebAssembly...
尤其WebAssembly,由于實(shí)現(xiàn)速度在數(shù)量級(jí)上的提升,逐步侵入原本認(rèn)為不可能的領(lǐng)域,讓瀏覽器成為一切的中心成為可能。
Web技術(shù)在手機(jī)App的使用也是現(xiàn)在的很多人爭(zhēng)論的話題。Web技術(shù)天生是開(kāi)放的,但原生App性能好,更重要是可以很流氓,更容易控制權(quán)限和流量。
現(xiàn)階段原生和Web App誰(shuí)也殺不死誰(shuí),很多Web App套上原生的殼,互相融合互相欺騙。
八、小結(jié)
在這篇文章里,我們提到了丹麥人、瑞士人、法國(guó)人、南非人、墨西哥人、俄羅斯人、當(dāng)然還有中國(guó)人。對(duì)軟件史沒(méi)有興趣的朋友,估計(jì)對(duì)這些名字已經(jīng)痛苦不堪。
碼農(nóng)的生活有點(diǎn)像多神教:學(xué)不完的經(jīng)書(shū),拜不完的眾神。
Delphi像中了飛刀的李壞,他沒(méi)有死,但江湖里再?zèng)]人提他的名字。
*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。