2010/09/07

翻譯:Windows程式設計的革命簡史(A Brief History of Windows Programming Revolutions) by Ron Burk

文章:A Brief History of Windows Programming Revolutions(Windows程式設計的革命簡史)
日期:2009.12.01
作者:Ron Burk
作者的部落格:Ron Burk - Programming, psychology, and "stuff".
作者簡介:
曾擔任Windows Developer's Journal的編輯職務;正在寫一本書,書名為"The Pop Psychology of Programming";這裡有一段5分鐘的影片,Ron Burk講解三種computer programming的定義。



Windows程式設計的革命簡史

爬出DLL地獄──再一次


首先,我們有Windows API以及DLL地獄(DLL Hell),第一波的革命技術是DDE──還記得熱連結(hot links)讓我們可以產生出狀態列來顯示微軟股票目前價位嗎?

大約就在那時,微軟搞出了VERSIONINFO這玩意,用來揮除DLL地獄這夢靨,但微軟的另一個團隊發現DDE有一個致命性的缺陷:那不是他們發明的!

為了解決這個問題,他們創造出OLE(跟DDE差不多,看起來不同而已),而且我還深深記得在一場微軟討論會上,有位演講者公開聲明Windows API很快就會改寫成OLE API,螢幕上的每個控制元件將會變成OCX;OLE引進介面這玩意,用來跟DLL地獄說掰掰,還記得那"就地(in situ)"狂熱嗎,還記得那時我們幻想著有一天所有應用軟體通通內嵌在一支(很明顯地,非常大的一支)Word文件中嗎?

就在那時期左右,微軟改拜C++,MFC也出來了,再一次地解決老問題,但這一次有繼承(inheritance)這玩意,不過咧,OLE可不會坐著發呆,重新包裝後以COM之名現身,突然我們醒悟了,OLE(還是DDE啊?)才是王道啊──裡面包含了精心打造的元件版本系統,是用來避免陷入DLL地獄的,與此同時,微軟某搗蛋團隊發現MFC有一個致命性的缺陷:那不是他們發明的!

他們毫不猶豫地修正了那缺陷,創造出ATL,跟MFC差不多,看起來不同而已,並且試著把COM團隊費盡心思教會我們的技術細節通通藏起來,這可刺激到了COM團隊(還是OLE啊,搞不清楚?)重新改名為ActiveX後再出發,釋出數以百磅計的新介面(甚至有新的版本控管介面,用來防止DLL地獄的玩意),還有,讓我們的程式碼可經由瀏覽器來下載的能力,加上各種病毒(哈哈──想辦法跟上腳步吧,你們這群ATL傢伙們!);就像個被忽視沒人裡的小孩一樣,作業系統團隊大聲呼喊著看過來喔,"準備好等著迎接Cairo吧",ㄘㄟˊ,他們從來沒能好好解釋說明過那是啥東西,更別提出貨見人了,不過有一點功勞要算在他們身上,作業系統團隊確實導入了"系統檔案保護機制(System File Protection)",是用來遠離DLL地獄的玩意兒。

與此同時,微軟另一支團隊發現Java有一個致命性的缺陷:那不是他們發明的!怎麼補救呢?於是有了J、Jole、ActiveJ(老實說,我記不得名字了),跟Java差不多,看起來不一樣而已,很興奮吧;不過昇陽開始告微軟,用的是某古老的法條說一家公司不能在一年內放出太多的技術,很明顯地是在試著阻止微軟創造雷同但只是看起來不一樣的產品,結果是讓微軟有了全新的自由,可以把錢塞進國會議員的褲子裡;還記得J/Jole/ActiveJ的產品經理用他的鞋拍桌保證微軟絕對不會終止放棄他的產品嗎?傻孩子!這一切只代表了一件事──ActiveX(還是應該叫COM啊?)團隊得到的關愛眼神太少了,這一群身段柔軟的API打造者,以更強的姿態COM+(不是應該叫ActiveX+嗎?)還有MTS(我不懂,為什麼"MTS"裡沒有"COM"或"ActiveX"或"X"或"+"等字眼呢──這次我整個被他們嚇到了!)回來了,他們還威脅說不久之後就要在所有術語後面再加上一個"+";大約在那個時候,某人大聲嚷嚷著"Windows DNA"和"Windows Washboard"一段時間,不過在我搞懂之前就死掉出局了。

那時,微軟注視著網際網路(internet)的發展已有數年,越來越不安,他們發現,網際網路有個致命性的缺陷:哎呀呀,你大概知道我要說什麼了,於是把我們帶到.NET(唸起來像是"doughnut甜甜圈",看起來不一樣而已),跟網際網路雷同,只不過有著更多的文宣廣告與宣傳;讓我把一點說的非常非常清楚:.NET解掉了DLL地獄這個麻煩,.NET有一個新的程式語言,叫做C#(發現Active++Jspresso有個致命性的缺陷,所以下場是出局了),.NET包含一個虛擬執行機器,所有語言都在上面跑(發現依賴英代爾CPU有個致命性的缺陷),.NET只用一套登入系統(如果不把你所有的密碼都存放在微軟的主機上,那是有致命性的缺陷的),事實上,比較簡單的方式是把.NET沒有的東西列出來;毫無疑問的,.NET將會是Windows程式設計的革命性的徹底改革的新方式...到明年就不是了。