Knowledge Gained by How Microsoft Lost the API War

讀完墨菲定律發威的一週之後,ㄚ琪要繼續讀微軟如何輸掉API戰爭,ㄚ琪本來還以為約耳是微軟這一派的,但是從這文來看,約耳也不見得是微軟這一派的了,不過這一篇很像是預言的故事,這篇文在2004年預言的,但是更早之前約在『90年代初期Robert X. Cringely預言主機時代會在2000年一月一日結束』,嗯,這個預言很快就知道沒有實現,那時的『IBM則是變身成一家巨大的老牌技術顧問公司,同時恰巧也在製造便宜塑膠電話。』

現在約耳好像要預言『微軟在戰略上最重要的寶物Windows API要輸了。』Windows API要輸了?怎麼在6年後的今天博客來還有看到精通 Windows API 函數、介面、程式設計實例 在賣,真是令人佩服啊!害我有一度還想學說,看來現在也可以把舊的書丟了吧!

開發者、開發者、開發者、開發者

有個結論『如果你想要賣作業系統,最重要的就是讓軟體開發者願意替你的作業系統寫軟體』,所以微軟的CEO史蒂夫鮑爾默(Steve Ballmer)『才會跳上舞台大喊「開發者、開發者、開發者、開發者。」』,原來是這樣的道理,難怪這麼多人想去微軟上班。你可以加入微軟的合作夥伴(Empower ISV)來開發,甚至也可以用免費的Visual Studio Express來開發。微軟就是要賺作業系統的錢。

為什麼蘋果和Sun不能賣電腦

這裡所說的賣電腦是指賣很大量的桌上型電腦。這一節裡竟還學到有人在Linux, BSD, Solaris and Mac OS X開發Windows API,真令人驚訝,因為這簡直是重寫嘛!

微軟內的兩股力量

這兩股力量分成『Raymond Chen陣營MSDN雜誌陣營』,Raymond Chen是努力讓Windows可以向後相容的代表人物,而約耳也說這是微軟成功的策略之一,你可以回去看蛋雞的問題,在The Old New Thing部落格中有提到What about BOZOSLIVEHERE and TABTHETEXTOUTFORWIMPS?微軟為了向後相容所做的很多努力,「有人指控微軟在OS升級時惡意地妨害應用程式時我會覺得很生氣。如果有任何程式不能在Windows 95執行,我會視為個人的失敗。我有很多個晚上沒睡去修正別人的程式,只是為了讓它們能在Windows 95執行。」

『另一個陣營我稱之為MSDN雜誌陣營,是以某一本開發人員雜誌來命名,這本雜誌充滿了讓人興奮的文章,都在教你用各種在自己軟體裡結合微軟產品的神秘方法來害死自己。』原來這個陣營這麼屎,還好我也沒花很多時間在上面,不過可能我也會死得很慘。

好了,現在有這兩個陣營,我感覺到了一個賣茅跟盾的武器商來了,以子之矛陷子之盾,何如?的戲碼又要上演,這個故事警惕我們千萬不要包山包海,什麼錢都想賺,這是行不通的,難怪說Windows API要輸了!

微軟失去向後相容的信仰

『第一個大勝利是讓Visual Basic.NET不必向後與VB 6.0相容。』嗯,有一點可以感覺到,確實那時的開發界應該有很大的騷動才對。Windows API快沒有了,『現在要開始準備迎接WinFX:下一代的Windows API』,這什麼碗糕啊?原來這是Winodws Vista的API,但是說真的,除了有很炫的畫面外,我怎覺得有點材材(台語)的。

因為這樣,看來外面的開發商好像很多多轉到web平台了,『在dotcom興旺初期建立了Yahoo! Store的Paul Graham很有力地總結:「新創公司現在有更多的理由去寫Web-based軟體,因為桌面軟體寫起來已經不那麼好玩了。現在想寫桌面軟體就要照微軟的規矩,呼叫他們的API還要應付他們多蟲的OS。另外如果你真的寫出什麼熱門的東西,可能會發現自己只是在替微軟做市場研究。」』,看到這裡,ㄚ琪還頗自豪的要為自己鼓掌了,這文是在2004年寫,當我2000年的時候重返資訊界,我的目標就已經朝向web的程式了,看來我走對了,現在呢?我希望我可以繼續走對未來方向。

自動排檔獲得最後勝利

這裡有提到:『為什麼自動化記憶體管理能大幅提升生產力? 1)因為你可以寫f(g(x))卻不用擔心要如何釋放g的傳回值,這表示你的函數可以回傳很複雜資料型態,而這樣的函數能讓你以更高階層的抽象想法來作業。 2)因為你不必花任何時間寫程式碼去釋放記憶體或追查記憶體漏洞(memory leak)。 3)因為你不再需要小心安排函數的離開點以確保記憶體都有釋放乾淨。』看起來Java會令人喜歡不是沒有原因的,我也慢慢喜歡上它了,也難怪把這比喻成自動排檔,確實自動排檔在大部分的情況都很適合每一個人使用,手排的有比較難也沒錯。

一個Runtime全部搞定

.Net的產生,是我一直沒有深入投入時間來學的,雖然微軟高唱只用.NET就對了,但是我看見業界還是很多人用C、C++、Visual Basic 6.0以及原本的ASP,甚至是Borland還是不錯的。說到這裡,已經冒出了『用.NET的都是在用ASP.NET來開發web應用程式,只會在Windows伺服器上執行並不需要Windows的用戶端系統。』所以從這裡大家就可以看出來,web應用程式要當道了。

噢,等一下,還有其他東西要出來!

前面的這個WinFX還不是終結版的喔,看這文說甚至還有『代號Longhorn的系統除了其他東西之外,將會有一組代碼為Avalon的全新使用介面API。』微軟真的很有錢稿一些亂七八糟的東西,都不怕矛盾啊,而且大公司的靈活度一定很差。

約耳提到他的產品沒有隨著微軟的策略起舞,這個策略在Knowledge Gained by Fire And Motion有提到,所以奉勸微軟派的開發人員不要太深入,因為這是個無底洞,在我看起來是這樣。

『有正職的開發人員不會有時間追得上來自Redmond的所有新開發工具,因為微軟有太多該死的員工在做開發工具!

這不是1990年代

微軟的一些『勇敢的新策略(.NET、Longhorn、Avalon之類的玩意)試圖建立一組API把大家鎖住。問題是大家都還在用1998時買來還很好用的電腦,這種策略是不太行不通的。』對啊,所以我看到我們的公司還在用Windows XP說,誰要用Vista或Windows 7啊,不需要用吧,很多軟體廠商的程式也沒那麼快的跟進了,害得我的電視盒只能在Windows XP上跑,我升了一週的Windows 7完之後,我把它冰封起來了,因為我還是需要一點娛樂的,而且要買個正式授權的,也要花費不少。

進入Web

已經快寫完了,大家再忍耐一下吧,其實這一篇寫到這裡,也花了我兩天的時間了,現在要講到這個方便軟體了,wen版的程式跟"rich client"應用程式其基本的優缺點很單純:Web應用程式比較容易部署,而rich client應用程式反應較快所以使用介面比較有趣。

web版的程式就是方便,不需安裝,但是還是有一些做不到的地方:

  1. 創造一個快速繪圖的程式
  2. 寫一個能標示紅色波浪底線的即時拼字檢查程式
  3. 在使用者按到瀏覽器的關閉盒時,警告使用者將會遺失其工作成果
  4. 不必連到伺服器來回溝通一遍,就能依據使用者的變更來更新小部份的顯示,
  5. 建立一個不需滑鼠的快速鍵盤驅動介面
  6. 讓大家在沒有連上Internet時繼續作業

OK!我想現在有些項目已經可以被聰明的Javascript開發人員解決了,所以像我愛用的Gmail,我還拿來收我的Yahoo信件,Hinet信件說,Oddpost這個我沒聽過的應用程式,聽說都是可以解決上面很多問題的軟體。

Web的繁榮『表示微軟的API突然間已經不那麼重要了。Web並不需要Windows。』到這裡又是一個矛盾的地方了,微軟大力倡導IE免費,現在打到Windows API了,所以微軟『他們不再在未來計畫裡承諾像HTA和DHTML這類的新技術。Internet Explorer團隊似乎也消失了;他們有好幾年似乎完全沒有動作。』咦?有嗎?怎麼IE8、IE9還是一直在演進?真的沒有Internet Explorer這個團隊嗎?可能這一點約耳有點預言錯了吧!

『微軟最近的重大思想基因(memo)是:「微軟把公司的未來賭在rich client上。」』這我倒是第一次聽到。

來自Avalon團隊的Joe Beda說道:「Avalon(大體上還有Longhorn)是微軟的基石。這句話表示我們相信你桌面的威力,能夠完成各種了不起的東西,而且是不可或許的。我們正在持續投入桌面,我們認為這會是個好地方,而且我們希望自己能啟動一波振奮…」

嗯,我想現在已經見證了吧!

我本身對這有一點點難過

約耳注意到這個關鍵:『我注意到(而且也和求才業的朋友確認)紐約市這裡會C++和COM程式設計的Windows API程式師年收入約十三萬美元,而一般用可控代碼語言(Java、PHP、Perl、甚至ASP.NET)的普通web程式師年收入是八萬美元。這可是很大的差別,而當我和從事微軟顧問服務的朋友談到這事情時,他們承認微軟已經失去整個世代的開發人員了。要花十三萬雇一個有COM經驗的人,是因為過去約八年來沒有人自找麻煩去學COM程式設計,所以你得找個很資深的人來(通常都已經晉身管理階層),說服他們再做個普通程式師去處理marshalling、monikers、apartment threading、aggregate、tearoff,還有其他一百萬件基本上只有Don Dox會的東西。事實上連Don Box都無法忍受再回來看這些東西。』

有很多開發人員確實已經移到web開發了,像ㄚ琪就是一個其中的移民,ASP.NET很出色,而PHP也不賴啊,但是這些東西都是伺服器技術,所以真的可以不要有Windows桌面了,難怪Google也要做桌面系統,因為他們的桌面系統是以瀏覽器為導向的。

寫到這裡,所有的東西都直指Windows API被看衰了,好吧,我就不要再花時間摸這一塊了!

感謝你看到這裡,很快就可以離開了,但最好的獎勵行動就是按一下幫我分享或留言,感恩喔~

點我分享到Facebook

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *