看板 ott
作者 標題 CDSN上的一篇談微軟技術的帖子
時間 2013年02月28日 Thu. PM 06:50:44
http://www.fmddlmyy.cn/text2.html
CDSN上的一篇談微軟技術的帖子
作者是個當過老師的程序員,名字叫《十年MFC經歷認識的Microsoft技術》。大概看了看,感覺前兩節還是有一些信息量的,後面的內容就東一榔頭西一棒了,再往後推介自己的開源軟件了,就更不成話了。作者說“看到微軟資料很多,感覺這個公司很有厚度”,其實開源社區的代碼、文檔也是浩如煙海的。在信息時代的IT行業,信息多一些實在不足為奇,要點是如何快速找到並掌握自己需要的信息。普通程序員不關心應該如何評價微軟,不過這些稗官野史看看也無妨。
一、初識MFC
我最初知道MFC大概是在1993年,那個時候Visual C++還沒面世,當時Microsoft的C++編譯器還很弱,官方的名字是Microsoft C/C++ 7.0,MFC的版本是1.0,幾乎沒有引起什麼反響,那個時期最好的C++開發環境是Borland C++ 3.1,其實,大概是1992年11月份,一個偶然的機會,我領略到Borland公司的厲害,記不得在什麼地方,我看到一個絕妙的集成開發環境,即Turbo C++ 3.0 for Windows,這是我記憶中第一個真正的Windows環境下的C++集成開發環境,那種激動的感覺至今仍記憶猶新,不客氣的說,當時至少在C++方面,Microsoft與Borland不是一個水平的,Borland明顯的要高於Microsoft ,Borland的產品在技術上給我留下深刻的印象。那個時候Microsoft最好的開發平台是Visual Basic 3.0,而Borland的Delphi正處於開發階段(Delphi的代碼名稱是:“VB Killer”)……,想起這些十幾年前的往事,我不禁感慨萬千。
十幾年來,我用過許多開發環境,關於Visual Basic,我用過最早的DOS版本,Windows版的Visual Basic我基本上全都用過,至今我還記得每個版本的VB安裝盤磁盤的盤數。同樣,我用過各個版本的Delphi,特別是Delphi 2.0,給我留下極好的印象。Delphi提供真正編譯的可視化開發環境,那個時候(1994年左右),Delphi就可以開髮帶有GUI的動態鏈接庫,你可以想像,在Microsoft Access 2.0的應用程序中可以加載一個Delphi Form並進行程序交互,那種感覺真是棒極了。
Borland C++是我心中無法抹掉的遺憾,從Turbo C到C++ Builder,我深刻的體驗到Borland的輝煌和無奈,Delphi從VB Killer走到為VB護航(你可以想像Delphi一步到位的ActiveX控件開發技術有多牛,早期的VB有多土,早期的VB不能開發動態鏈接庫,因此無法開發ActiveX控件,想起來真令人噓唏不已),Borland C++的命運也是不濟。Borland C++ 3.1的輝煌永遠不再了,十幾年的開發工作中,我在C++上投入了大量的精力,Borland C++曾經給我帶來無數的激動,然而這個經典的名字卻在與Microsoft的競爭中漸漸的流逝了……。
MFC4.0的出現,使得人們感覺Microsoft在C++方面趕上來了,這一版的MFC是Win95推出後出現在Visual C++ 4中(Microsoft沒有VC 3,VC4以前的版本是2.2、2.1、2.0、1.51 、1.5、1.0)。也許是對Borland C++的潛意識的失望,我不知不覺的接受了MFC,VC 4.2推出時,我通過正常渠道購買了這個編譯器的企業版。
二、關於Microsoft
關於Microsoft,有無數的人要對這個名字敘說感覺,這個令人討厭的名字!不知道是喜歡還是憎惡,你是程序員,你的心思可能就要因Microsoft的存在而動,即使你用Linux,你可能也是因為Microsoft技術因素。多少年來,這個名字每天都出現在你、我、他的面前,因為你不得不面對Windows的存在,可是你憎恨這個名字嗎?你討厭這個名字嗎?我不知道是否已經對這個名字麻木了。1998年我個人訂了Microsoft MSDN Universal版,我開始比較全面接觸這個公司的開發技術,你可以想像,1998年當你面對上百張技術光盤的時候,你就知道什麼叫做“厚度”,當我們有時說出“趕上”或“達到”Microsoft某些產品的水平的時候,可能我們缺乏對這個公司“厚度”的真實了解。進入MSDN,我感覺Microsoft簡直不是一個“公司”,而是(或者正在形成)一個“社會”。當時著名的技術網站http://www.codeguru.com全部的技術資料是可下載的(那個時候http://www.codeguru.com提供整個網站內容下載服務,大約3M左右),大名鼎鼎的www. codeproject.com還不存在。一開始,我始終潛意識在技術上對比Microsoft與Borland,應當說技術上Borland不比Microsoft弱,即使現在也有人持有這個看法,可是為什麼Borland走到今天這個地步?而Microsoft卻如日中天?若干年前,這兩個公司競爭何等激烈,而現在卻是另一番“合作”的景象?可能很多人想過,如果Borland不存在,對Microsoft不是更有力嗎?其實Microsoft可能精通中國歷史,讀過《三國》、十分了解戰國時期的中國,其實Borland形式上的存在,對Microsoft是十分有利的,至少形式上還有競爭對手,而事實上Borland已經受控於Microsoft(Microsoft是Borland的大股東)。你可以看到一些微妙的現象:Borland為Microsoft提供了大量的人才,其中包括Delphi總設計師以及Borland C++編譯器的核心成員;同時也為Microsoft .NET提供強有力的護航服務(看看C# Builder 、Delphi .NET)。1998年Microsoft的COM技術基本已經成熟,這個技術使人感到震撼,當時Microsoft的對手們提出“OpenDoc”用於對抗“COM”,你看看“OpenDoc”陣營的幾個成員:IBM、Apple、Borland 、Novell,你會感到這個陣營十分豪華、強大。但結果卻差強人意,“OpenDoc”無疾而終,而“COM”依然生機勃勃。
有人說“COM”沒落了,那麼就太不了解Microsoft了。在與“OpenDoc”的競爭中,“COM”是個徹底的勝利者,在與“Java”的競爭中,“COM”成功的進化了,在這個過程中Microsoft體現了強大的吸收能力、以及無法想像的韌勁。.NET只不過是COM的“別名”而已。對於一個經驗豐富的C++程序員而言,.NET就是COM的進化,而Microsoft內部.NET就是“COM 3.0”(OLE2就是COM 2.0),而“CLR”就是一個不擇不扣的COM對象。曾經有人問我,既然牛頓時代就奠定了基礎(想想著名的牛頓-萊布尼茨公式),幾百年後的今天,數學還研究“微積分”嗎?回答當然是依然在研究!“微積分”早期是針對函數的,現代“微積分”是針對“流形(Manifold)、纖維叢(Fiber Bundle)”的,概念深奧了,可是基本思想不變,只是“微積分”的思想得到合理的延拓與進化,你了解Microsoft嗎?Microsoft Research有一批超一流的數學家在為Microsoft工作,其中一些是斐爾茲獎的得主,Microsoft正在實現如同“微積分”進化到“微分流形”一樣將“COM”進化到“.NET”。從科學概念角度上分析COM與Java,可能COM更全面、精確,從實現的成熟度上Java可能更成熟,可是你看到,Microsoft正在不緊不慢的追趕。Microsoft令人聯想起戰國時期的強秦。
戰國時期的秦國,採取“遠交近攻”“撫弱掠強”等措施傲視六國,今天的Microsoft也是這樣,VB1.0時,Microsoft推出“VBX”控件技術,眾多的小公司得以生存,Microsoft自己不開發“VBX”組件,同樣“VBX”進化為“OCX”時,Microsoft並不十分強大,可是這種試探得到眾多小公司的響應。1997年Microsoft Office 97、1998年Microsoft推出Visual Studio 6.0,給眾多中、小公司提供了生存、發展的機會,例如Microsoft Office 97中集成了Visual Basic for Application 5.0,這項技術使得幾百家軟件開發商與Microsoft簽署了VBA技術許可協議,即使AutoDesk這樣的公司都與Microsoft簽署了這個協議,這個協議使得每個集成VBA的產品的給個用戶許可為Microsoft付40$的許可費,如果你了解VSIP (Visual Studio Integration Protocol)協議,以及有多 少公司簽訂了VSIP協議,你就真正感覺到Microsoft的可怕;Microsoft Office 97、Visual Studio 6.0的用戶界面十分漂亮,為什麼Microsoft自己的開發工具不提供類似的軟件組件?你看到眾多第三方的Microsoft盟友紛紛推出自己的界面庫以模仿Microsoft,他們不會反對Microsoft,因為他們已經形成了使得Microsoft以及這些公司得以生存的生態圈。
Microsoft的技術儲備有多少,Microsoft之外的人很難說清楚,Microsoft中國公司也未必了解多少,1999年WTL類庫剛剛出現的時候,人們就希望WTL能得到官方的支持,或授權給一個Microsoft之外的一個公司(你能想像出Borland C++ 5.0內置的ActiveX開發機制是基於Microsoft ATL類庫嗎?),直到今天,WTL依然如故,我們完全相信,如果Microsoft強力推廣WTL,WTL完全可以流行,可是Microsoft不缺類似的技術,類似的類庫還有BCL(Base Control Library,一個用於開發輕量級ActiveX控件的類庫),Microsoft還有一個基於ATL的類庫,這個類庫用於開發ActiveX Designer,ActiveX Designer是絕大多數程序員不了解得一類對象,如果你熟悉Office開發,你 知道Office VBA中有一類對象,即Form2,此外VB6.0中的報表設計器(以及著名的Active Reporter),都屬於此類對象,用這個類庫,你可以為VB6.0以及集成VBA的系統提供定制化的可視化設計機制等等,如今ActiveX Designer已經演化為集成於Visual Studio .NET中的設計器。
有一篇回复給我印像比較深:“不管你在不在WINDOWS下工作,必須跳出MS的世界才能真正理解操作系統和編程。作為程序員,你不能自我定位為普通的計算機用戶,只能在IDE工作的程序員不是真正的程序員。
你必須用過make/ant/scons/autoconf/automake才可能明了軟件形成的過程。
你必須用過grep/sed/find/sh才能了解正交設計有多麼重要。
你必須同時精通多種語言(C++ /JAVA/PYTHON/...)才可能融會貫通,才能了解面向對象究竟是怎麼一回事。
你必須同時了解多種分佈式組件技術COM+/CORBA/RMI/XML-RPC/SOAP等多種,才能正確評價.NET、JAVA或是其它。
你必須同時了解多種圖形界面組件:MOTIF/QT/GTK/WXWINDOWS/WIN32/SWING/SWT才可能正確評價誰是誰非。
你必須了解XUL/ XAML才能體會未來的應用界面的開發會和基於代碼生成的VC/VB/DELPHI有多麼大的不同。
總而言之,兼聽則明,只陷在MS的世界裡很難理解這世界上不斷湧現的新技術為何而來、從何而來,這些新技術對你來說就只能是新的技能而不是知識。”
這篇回复乍一看很有道理,其實再想一想,那麼多“必須”也未必如此。如果對Windows的很多基礎技術還一知半解,那就遠遠談不上跳出了。一個人時間有限,學什麼東西可以根據需要和興趣自由安排。知識是學不完的。
不過程序員多學一些東西總是好的,例如在CPAN上從C語言的預處理器、WBXML的解析器到生成WAV文件的模塊,幾乎沒有找不到的源代碼。但如果你不會perl,就無法利用這些資源。在Windows上用C/C++時,我經常會從Delphi的VCL類庫抄一些代碼,有時因為MFC沒有提供我需要的接口,有時因為我想不起來用哪個Windows API。但如果不會Delphi,就無法享用這個便利。
其實話又說回來,我覺得程序員的學習還是應該以興趣、求知為主,其它的只是隨之而來的東西。不為無益之事,安能悅有涯之生,學習編程語言不見得比聽“七十二變”高明,只是更功利一些。
--
※ 作者: ott 時間: 2013-02-28 18:50:44
※ 編輯: ott 時間: 2013-02-28 18:54:10
※ 看板: ott 文章推薦值: 0 目前人氣: 0 累積人氣: 263
回列表(←)
分享