[置頂]

書單: 安迪葛洛夫:Only paranoid survives.

Jul 28, 2008

有關 .NET

我今天買了 "Programming Microsoft .NET" 中文版。

我去 Joel On Software 搜尋 ".NET" 想知道 Joel 對 .NET 的看法

1. 他們在 2002/04/11 公布了他們公司的 .NET strategy:
   內部用的程式與web程式,以後都要以.NET開發。

2. 在 2004/01/28 "先生可以賞我一個連結程式嗎?"
   提到CLR的致命缺點。
   CLR有版本不相容的問題。
   而且CLR很大(22MB), 卻不能經過linking產生static linking 的應用程式。


3. 在 2004/06/13 "微軟如何輸掉API戰爭"
   提到了範圍已經不僅僅是 .NET,而是微軟、以及未來十年整個軟體工程界的可能走向。

底下是我覺得值得記下來的一些文字片段:

## Raymond Chen是微軟Windows團隊的開發人員
Raymond Chen陣營相信,讓開發人員寫一次程式能到處(好吧,在所有的Windows上)執行,可以讓他們更容易做事。而MSDN雜誌陣營則認為要提供一些功能很強的程式給開發人員使用,才能讓他們更輕鬆,前提是開發人員願意承受難以置信的複雜部署和安裝麻煩,更別提巨大的學習曲線了。

Raymond陣營想的是強化(consolidation)。請不要讓事情變得更糟,只要讓我們原有的東西能繼續動就好了。MSDN雜誌陣營則是得一直生產出大量的技術,卻沒有人能跟得上。

MSDN雜誌陣營挾著這次大勝接管一切。突然間改東西變得理所當然了。IIS 6.0用了不同的執行緒模型,讓某些舊應用程式不能動。我很震驚地發現用Windows Server 2003的客戶不能執行FogBugz。然後.NET 1.1不能完全向後相容於1.0。而現在秘密終於揭露,OS團隊也心領神會,決定不再為Windows API增加新功能而是完全取代掉。我們被告知不要再用Win32了,現在要開始準備迎接WinFX:下一代的Windows API。全部都不一樣了。現在依據的是用受控代碼(managed code)的.NET、XAML、Avalon。是的,我得承認遠遠優於Win32。不過這並不是升級,而是對過去的破壞。

在Windows初期要開發桌面應用程式,微軟提供兩種作法,可以寫C程式直接呼叫Windows API並自行管理自己的記憶體,或者用Visual Basic並把記憶體交給它管理。這也是我個人過去13年來用得最多的兩個開發環境,用到熟得不得了

(順便一提,網誌聚合器格式是個神秘而充滿政治味的世界,有在注意的讀者可以看到那裡面發生的事情是一樣的。RSS已經變得支離破碎了,原因是有數個不多的版本,規格不正確又有很多政治鬥爭。有人試圖建立叫Atom的另一種格式來消弭混亂,結果只是在RSS的眾多版本外再加一個Atom而已,規格還是不正確而政治鬥爭依舊很多。當你創造第三方案想藉以一統兩股對抗的力量時,最後只會變成三股敵對的力量。你並不會一統什麼也沒有真的修正什麼。)

而在用.NET的都是在用ASP.NET來開發web應用程式,只會在Windows伺服器上執行並不需要Windows的用戶端系統。這正是個關鍵點

## 註: Redmond, Microsoft Head Quarter 所在地

這表示微軟的API突然間已經不那麼重要了。Web並不需要Windows。

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

(註:我看到這邊笑了出來。這個笑點大概只有訊連的 Burning team 與 SBR team 才會懂的)


後記:對於「Joel 對.NET有什麼看法」這件事,我還需要再多看幾篇文章。
不過我想說說「微軟如何輸掉API戰爭」這篇文章。
這是一篇四年前的文章。
感謝梅普華,他將早期Joel 的文章做了很好的翻譯。
然而「在PC上面開發程式的程式設計師們」的下一步應該是什麼,是很值得再想想的問題。

 

No comments: