Windows編程革命簡史

>>>  技術話題—商業文明的嶄新時代  >>> 簡體     傳統

源文:A Brief History of Windows Programming Revolutions (Ron Burk)

首先,是 Windows API 和 DLL Hell。(譯注:DLL Hell——DLL災難,就是微軟的DLL升級時因為不同版本可能造成應用程序無法運行的災難,首當其沖的是COM編程,相信大家都知道某些木馬或是病毒更改了一些系統的DLL可以導致整個Windows不舉,這就是DLL Hell) 于是,第一次革命是DDE——我們可以創建一個狀態條在上面顯示Microsoft的股票價格(譯注:Dynamic Data Exchange,工作原理是: 甲方申請一塊全局內存,然后把內存指針postmessage到乙方,乙方根據收到的指針訪問那塊全局內存)。

在那個時候,Microsoft 創建了 VERSIONINFO 資源來管理版本信息,當然,是用來消除DLL Hell。但是,另一個微軟內部的小組發現了DDE的致命缺陷:這不是他們做的!

為了解決這個問題,他們創造了OLE(很像DDE,只是名字不一樣),而且,我還記得在一次 Microsoft 大會上,某個微軟的演講者正式宣布—— Windows API 馬上就會被 OLE API 所重寫并取代,我還盲目地相信了這一說法。而且,所有的在圖形界面的控件都會是OCX,那是OLE引入的接口,同樣,其目的是為了消除DLL Hell。相信大家都記得,那個時候,我們是怎么地夢想著有一天,我們的應用程序(當然是非常大的程序)可以完全地被嵌入到Word文檔中。

然而,在Microsoft的某處,Microsoft有些人開始信仰 C++,其確信MFC的出現并可以解決所有的一切問題,但是,因為歷史原因,OLE并沒有出局,其改了一個名字,叫COM,此時,我們立馬意識到OLE(以前的DDE?)真正意味著什么——其用精心的版本管理系統來消除DLL Hell。與此同時,Microsoft的一個變節小組發現了一個MFC的致命缺陷:這不是他們做的!

 

當然,微軟件的動作是很快的,他們立刻修正了問題——創造了ATL,有些像MFC,只是名字不同,他們想使用漂亮的ATL把那些晦澀難懂的COM的知識給隱藏住。這個動作刺激了COM團隊(或是OLE團隊?)改名為ActiveX,并發布了成千上萬的新接口(甚至是很多版本化的接口,當然,主要目的是為了消除DLL Hell),當然,ActiveX可以讓我們的程序可以從Web游覽器上下載,并可以完美地和病毒一起嵌入瀏覽器中(哈,還不緊跟時代,感謝ATL吧)。此時,操作系統團隊就像一個失寵的孩子一樣,大聲呼喊著“Cairo操作系統來了”引起大家注意,當然有一些怪異惡心的東西連他們自己也無法解釋清楚,所以,別提發布了。為了聲譽,操作系統團隊的確引入了“系統文件保護”的理念,當然也是為了消除DLL Hell。

這個時候,Microsoft的某個團隊發現了Java的致命缺陷:這不是他們做的!于是他們創造了一個叫J,或是Jole,或是ActiveJ的東西(對不起,我真的記不起叫什么了)來挽救Java(譯者:應該是Visual J++)。看起來很像Java,只是名字不同罷了。這太讓人興奮了,但是Sun使用了一些相當古老的法律條款向Microsoft提起了法律訴訟,其在一年內限制了任何一個公司可以發布類似Java的產品。這明顯是抑制微軟復制別人產品的一次嘗試,唯一不同的,其結果導致了微軟流向國會議員褲兜的現金網絡的建立(在這個網絡可以得到時事新聞和價值$14.75的T恤衫)。還記得 J/Jole/ActiveJ 的項目經理用他的鞋桌在敲著桌子并信誓旦旦地堅持 Microsoft 將永遠不會放棄他的產品。SB!所有的這些也就僅僅意味著一件事——沒有人關心ActiveX團隊(或者是COM?)。令人難以置信的是,微軟把這些東東全部集成起來,成了COM+(難道不應該是ActiveX+?),還有MTS(我不知道為什么沒有COM和Active或是X或是+的字眼,而直接叫MTS了——我為這個名詞感到實實在在地震驚!)。他們總是那么NB地為那些流行詞加上“+”號。在那段時間,還有人曾叫喊著“Windows DNA”以及“Windows Washboard”,但這兩個東西最終在我搞清是什么玩意的之前就夭折了。

在這一點上,Microsoft已經很不安地窺視著Internet好幾年了,他們終于意識到Internet上有一個致命缺陷:嗯,你應該知道這是什么(譯注:Internet不是做他們做的!)。于是他們開始培養我們和.NET約會(.NET的發音很像“doughnut”圓環圖,不過,這只是他們的唯一不同),這和Internet很相似,只不過.NET有更多的印刷品。其讓我們清楚再清楚地了解一件事:.NET會消除DLL Hell。.NET包含了一個新的編程語言,叫C#(為了解決已經死翹翹的Active++ J++的缺陷)。.NET還包含一個虛擬機,所有的語言都運行在上面(這主要是為了解決依賴于Intel CPU的缺陷)。.NET還包含了一個單一的登錄系統(這主要是為了解決“不把口令存放在Microsoft服務器上”的缺陷)。實際上,我們更容易做的是把.NET不包含的事給列出來。.NET絕對是一個劃時代地Windows編程革命……當然,僅到明年。

(全文完)


網載 2013-07-22 09:56:51

[新一篇] 硅谷“鋼鐵俠”馬斯克:以登陸火星為終極目標

[舊一篇] 使用CLR Profiler分析.NET程序內存不斷上升的圖文教程
回頂部
寫評論


評論集


暫無評論。

稱謂:

内容:

驗證:


返回列表