從.NET說開去(我的.NET 4.0系列課程開講)

作者: 金旭亮  來源: 博客園  發布時間: 2010-02-24 18:25  閱讀: 735 次  推薦: 0   原文鏈接   [收藏]  

  微軟公司宣布,預計于2010年4月發布.NET 4.0和Visual Studio 2010。從1999年開始,.NET走過了10年的風雨歷程。

  李開復博士在其自傳《世界因你不同》中回顧了.NET最初的故事:

  1999年時,互聯網有了爆發性的增長,在這個時代背景下,微軟的“掌門人”比爾蓋茨一直在思索著一個對微軟公司的發展非常關鍵的問題——微軟是繼續專注于Windows,還是向互聯網發展,將微軟的各種軟件產品移植到互聯網上?

  比爾蓋茨認為,互聯網是一個大趨勢,于是成立了一個.NET部門,進行這方面的探索。

  被命名為.NET的新戰略就是所謂的“新一代網絡平臺”,這其實就是互聯網時代的“視窗”。將來的視窗包括無線通訊、智能家電,也包括新一代的人機界面,而更多的終端將可以實現互聯網的功能。

  比爾蓋茨的這個決定在微軟公司內部引發了激烈的爭論,Windows的“元老們”對Windows擁有很深的感情,無法接受這一產品在公司產品線中的核心地位被動搖,而另一批“變革派”則認為:網絡將蓋過Windows,瀏覽器將變成一個平臺,將會有越來越多的軟件在瀏覽器中運行,因此,微軟公司應該將Windows的功能逐步移到瀏覽器上,凍結對Windows的投資,因為Windows即將完成它的歷史使命,會在十年內走到它的生命盡頭。

  所謂“.NET戰略”,簡單地說就是微軟將開發一個“超級瀏覽器”,它可以運行所有軟件。這就是.NET最初的構想——.NET要“革”Windows的命。很明顯,.NET戰略過于激進了,在大多數情況下,一個技術上的創新不可能平空發生,往往要建立在原有技術基礎之上,完全拋棄原有的東西既不可能也不必要。

  在“守舊派”與“變革派”激烈的爭論中,比爾蓋茨最終做了妥協,取消原先的.NET計劃,仍將重點放到Windows上,并且將.NET建構于Windows之上。

  作為一個妥協的產物,.NET從Windows的“挑戰者”變成了“合作者”,變成了一個新的Windows軟件運行平臺。

  記得是2002年3月,我在北京參加了.NET 1.0和Visual Studio 2002發布大會,當時約有3000名軟件工程師和業界代表參與大會,在會上,微軟鄭重宣布:.NET為未來十年的軟件技術做好準備。也正是從那時起,我開始學習、研究和應用.NET技術,一直到今天。

  很自然地,.NET 4.0成為了我非常關注的一個熱點。從裝在Virtual PC中的VS2010 CTP開始,我總是在第一時間下載新版本, CTPàBETA1àBETA2àRC,Visual Studio各版本一個沒拉地依次在我的電腦上“安營扎寨”,在學習與探索之余,我在CSDN和博客園的個人博客上寫了不少介紹和剖析.NET 4.0的技術文章。

  回顧過去近8年的.NET之路,不禁頗有感觸。我在CSDN博客上發表的《.NET 4.0并行計算基礎》系列文章的結束語中,繪出了 .NET各版本的發布時間與功能擴充示意圖:

 

  看著這張圖,再想想李開復博士講述的故事,有何感觸?是不是看到了微軟公司一步一步的前進腳步?

  這里,我談談我對微軟公司的感覺:

  這是一個“可怕”的擁有巨大影響力的公司。

  這是一個有點霸道的、有時會使用一些帶有點“無賴”性質的手段去戰勝對手的公司。想想它是如何挖人,如何將瀏覽器市場從NetScape中奪回的歷史就明白了。

  這是一個“看上去不可戰勝”的公司。數十年來,多少公司盛極一時,如今卻灰飛煙滅,而不怎么討人喜歡的微軟卻活下來了,還活得很不錯。事實證明:想跟微軟做對,沒本事沒實力還真不行。

  這是一個會犯錯誤但總能從錯誤中得到教訓,并及時做出調整的公司。它雖時常“后知后覺”,但最終往往總能“后來居上”。這就是本事。

  記得C#誕生之日,正是Java紅火之時,當時不少人都認為C#不過是Java一個拙劣的追隨者罷了,然而歷經“8年抗戰”,C#與.NET Framework互相配合,不斷完善:C#1.0乏善可陳,多是炒Java的冷飯,到了2.0就引入泛型,C#3.0引入了LINQ,C#4.0又引入了動態編程語言的特性,從未止步不前。

  而Java這一方面則在走下坡路, 2009年的一大新聞是Sun公司被Oracle收購,Java之父James Gosling 在其博客上貼了一幅圖片,令人感傷:

 

 

  不管怎樣,微軟在這一回合中小勝一局,因為它活下來了,雖然仍然有Google和IBM這種旗鼓相當的對手,但只有活下來,才有你說話的機會。

  我期望Java還有機會重整旗鼓,繼續與C#競爭下去,因為只有競爭才能帶來進步。

  Sun公司的沒落和微軟的“東方不敗”,實際上再次說明了一點:在IT領域,僅有技術是不行的。公司出色的商業運作和利用技術所獲得“真金白銀”利潤的能力,是技術這一“上層建筑”的“經濟基礎”。

  看看微軟是如何推動技術進步的吧。

  在即將發布的.NET 4.0中,我看到了一輪新的技術變革到來的訊號,而微軟在積極地應戰,這體現在哪個方面呢?

  (1)在.NET 4.0中,微軟為.NET新增了對并行計算的支持,讓多線程應用程序的開發變得前所未有的簡單,這實際上是在迎接“多核”時代的到來。

  (2)微軟首次在Visual Studio 2010中集成“云計算”應用系統的開發功能,這一點意義不用多說。

  (3)微軟在Visual Studio 2010中集成了由開源社區支持的ASP.NET MVC、MEF等框架,標志著微軟在悄悄地由“封閉”走向“開放”,雖然步伐不大,但這其實也是大勢所趨。

  (4)微軟充分利用已有的資源,將多種技術進行融合,嘗試讓軟件開發模式具有“統一性”。舉個非常典型的例子:比如WCF Data Service實際上是ADO.NET實體框架與WCF相結合的產物,而我們又可以在“Windows Azure”中看到其(指WCF Data Service)“若隱若現”的身影。微軟的云計算平臺為每個云計算應用提供了一個“跑著Windows的虛擬機”,讓云計算應用開發盡可能地接近于傳統的Windows平臺軟件開發體驗。

  (5)……

  還有更多的例子,我就不舉了,很明顯,微軟在努力地爭取在軟件技術下一個十年中獲得競爭優勢。

  微軟成功地建立起了一個微軟帝國,我不知道它什么時候會倒下。至少在目前,我看不到它有此可能。因為它以實實在在的產品滿足用戶需求,以不斷更新的技術持續不斷地提升軟件開發的效率,以靈活的商業策略去贏取利潤,善于從對手身上學習,能從失誤中總結教訓,而且很有耐心。更重要的,微軟聚集了一批世界一流的人才,甚至會為一個員工的去留而不惜與競爭對手走上法庭。

  我想,排除感情因素,多數人不得不承認,微軟是一個“可怕”的對手。

  前段時間,我看了好評如潮的大片“阿凡達”,為其3D特效目瞪口呆之余也感嘆:中國電影業實在差得太遠。

  我們總在玩別人玩剩下的東西。

  軟件業不也如此?中國有希望能追趕上別人的腳步嗎?

  中國軟件業的期望在哪里?國內有多少家公司可以和微軟、Google等一起“逐鹿世界”?

  我想,承認差距是第一步,奮起直追則是第二步。

  2009年底,北大教授韓毓海寫了一本磅薄大氣的社會學著作《五百年來誰著史——1500年以來的中國與世界》,書中韓毓海先生站在世界的全局角度分析為何經濟總量世界第一的明朝會亡于李自成、張獻忠之流的“流寇”和僅區區數十萬人的滿清的“兩面夾擊”。

  韓毓海先生指出“流寇”與“外寇”實非明朝亡國之根本原因,明朝亡國之根本原因在于近500年以來,中國國家組織力一直都是持續下降的。明朝的官員多為走科舉之路出來的書呆子,于國家經濟治理極為無能,導致整個中國實際上被“吏”和地方豪門所左右,此即“官無封建而吏有封建”。另一方面普通百姓又是一盤散沙,管理成本非常之高,于是,明朝時期的中國,最上層的政府根本無力管理最下層的百姓,中間層次的“吏”和地方豪門勢力獨大,盤根錯節,任何不符合其利益的政策是不可能被執行的。

  終明一朝,國家組織力持續下降的趨勢不可逆轉,于是無法建立起獨立自主的國家財政體系,只能通過大量進口美洲白銀,以“輸血”式的方式維持表面的繁榮。所以,明非亡于流寇和滿清,實亡于經濟的崩潰。

  清朝建立以后,全盤接收了明的體制,也重復了“明朝的故事”,其結果是從1840年開始,西方列強區區數千人的軍隊,就可以在擁有數億人口的“大清”領土上縱橫馳騁,無人可擋。悲夫!

  孫中山是個偉大的探索者,然而,他的探索失敗了,其關鍵原因在于:他只關注了中國的上層,過于依賴“精英”的“獨立奮斗”,依靠這個軍閥打那個軍閥,有用嗎?

  所以,辛亥革命雖然推翻了滿清,但中國社會的架構沒有任何變化,最下層的民眾仍是一盤散沙,沒有受到任何觸動(看看魯迅的系列小說就明白了),國民政府仍然是一個組織力極為低下的政府,所以一點也不奇怪,一個小日本就可以把諾大個中國打得無還手之力,如果不是日本鬼子人神共憤地兇殘,上天安排讓其野心膨脹到貪心不足蛇吞象的程度,中國的抗戰,遠非區區8年所能結束。

  韓毓海先生指出,Mao Zhe Dong所領導的革命之所以成功,是因為 Mao 很敏銳地看到了中國的關鍵,他領導中國G_C_D從底層開始重塑整個中國,致力于將一盤散沙的中國底層民眾組織起來,走農村包圍城市的道路,這是一個中國社會近500年以來的重大改變,從而使得國家的組織力強大而有效,而原先一盤散沙的中國底層民眾組織起來以后,其合力大到遠遠超出當時世人想象的程度,于是建國之初,一窮二白的新中國就敢和世界第一強國硬碰硬而不落下風!

  撫今追昔,不禁讓人感觸萬千。

  讓我們把視野從歷史拉回現實,再來看看中國軟件業的希望在哪里!

  借鑒黃仁宇、韓毓海等社會歷史學者的研究成果,我個人覺得,中國軟件業的希望在于需要有一大批優秀的從事“底層”和“一線”開發的普通軟件工程師(還包括所有在軟件企業基層其他工作崗位的勞動者),提升他們的平均素質是中國軟件業的希望所在。

  中國軟件業需要一個“從底向上”的努力。

  其中,教育是一個突破口,中國應致力于培養出大批合格和優秀的軟件人才,在此基礎之上,才可能催生出一批優秀的軟件企業,方能通過長期的(可能達數十年)的努力,不斷地縮短與美國等發達國家在軟件領域的差距。

  軟件強國靠錢堆不出來,靠行政命令也不可能,只能靠中國能擁有一大批高水平高素質的軟件人才,只能靠中國數百萬的普通IT工作者辛勤的工作才有可能。指望僅靠少數的一些“精英”和少數幾個“牛企”就可以強國,是個不切實際的夢想。

  中國軟件產業的未來,取決于中國教育能否用數十年的時間,培養出幾代不講特別優秀至少是合格的軟件工程師。

  除此之外,我看不到有其他的路。

  而當代中國的悲哀也在此。正是中國教育出了大問題,不是育人而是毀人廢人,所以我們的軟件業才無法成長起來,這是中國成為軟件弱國的重要(可能是最根本的)原因。

  與其坐而論道不如起而行之。

  我是一名普通的教育工作者,想作一些力所能及的工作,為此,新學期我將利用講授《面向對象技術與方法》課程的機會,在北京理工大學率先講授.NET 4.0系列技術,包容.NET開發最主要的技術領域:

n 并行計算

n MEF4

n ASP.NET MVC2

n WCF4

n WPF4

n WF4

n Silverlight4

n ……

  本人雖才疏學淺,于.NET技術研究不透,水平不高,但至少可以起到幫助大家以較高的效率去了解微軟平臺軟件技術最新進展的目的。其實,學習不是目的,應用和創造才是目的。我期望能通過這些課程,幫助聽課的朋友掌握.NET這一強大的工具,從而能將軟件技術與自己的專業及所從事的具體領域和實際工作結合起來,切切實實地應用和創造。

  以下是我這學期的開課時間和地點,第1次課是2010年3月16日周二。

  20-081200-110-07 面向對象技術與方法

  班次:1 學時:36 教師:金旭亮

  上課安排:

  上課時間 : 第2周 -- 第10周,周2第3大節,上課地點 : 研究生樓405

  上課時間 : 第2周 -- 第10周,周4第2大節,上課地點 : 研究生樓405

  歡迎所有對.NET技術感興趣的在校學生和有時間有興趣的業界軟件工程師旁聽、交流和指正。

  如果每個中國軟件人都能在自己的崗位上辛勤工作,我想,我們不會永遠落后于人的。以下古語,與諸君共勉:

  千里之行,始于足下,國家興亡,匹夫有責。

0
0
 
 
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()