1999年,就聽說微軟公司在研發(fā)一種名為“cool”的新開發(fā)語言,而具體內幕一直是個謎,直到2000年6月26日微軟在奧蘭多舉行的“職業(yè)開發(fā)人員技術大會”(PDC 2000)上,這個謎底終于揭曉了,這種新的、先進的、面向對象的開發(fā)語言就是c#(發(fā)音為“C sharp”)。那么微軟為什么要開發(fā)c#,c#究竟能給開發(fā)者帶來什么好處呢?
■山雨欲來風滿樓
1995年,SUN公司正式推出了面向對象的開發(fā)語言Java,并提出了跨平臺、跨語言的概念后(write the code once and run it anywhere),Java就逐漸成為了企業(yè)級應用系統開發(fā)的首選工具,而且使得越來越多的基于C/C++的應用開發(fā)人員轉向了從事基于Java的應用開發(fā)。Java的先進思想使其在軟件開發(fā)領域大有山雨欲來風滿樓之勢。
很快,在眾多研發(fā)人員的努力下,微軟也推出了自己基于Java語言的編譯器Visual J++,Visual J++在最短的時間里由1.1版本升到了6.0版本。這決不僅僅是數字上的變化,集成在Visual Studio 6.0中的Visual J++ 6.0的確有了質的變化,不但虛擬機(JVM)的運行速度大大加快,而且增加了許多新特性,同時支持調用Windows API,這些特性使得Visual J++成為強有力的Windows應用開發(fā)平臺,并成為業(yè)界公認的優(yōu)秀Java編譯器。
不可否認,Visual J++具有強大的開發(fā)功能,但其主要運用在Windows平臺的系統開發(fā)中,SUN公司認為Visual J++違反了Java的許可協議,即違反了Java開發(fā)平臺的中立性,因而,對微軟提出了訴訟,這使得微軟處于極為被動的局面。微軟將如何應對呢?
■形勢所迫另辟蹊徑
就在人們認為微軟的局面不可能再有改觀的時候,微軟卻另辟蹊徑,決定推出其進軍互聯網的的龐大計劃——.NET計劃,和該計劃中旗幟性的開發(fā)語言——c#。
微軟的.NET是一項非常龐大的計劃,也是微軟今后幾年發(fā)展的戰(zhàn)略核心,“在任何時間、任何地點,采用相應的設備以獲取所需的信息”的夢想并非一朝一夕能實現的。Visual Studio.NET則是微軟.NET的技術開發(fā)平臺,其重要性可見一斑,而c#就集成在Visual Studio.NET中。
在軟件開發(fā)領域中,廣大的程序開發(fā)者們對用一個測試版的平臺進行商業(yè)應用系統的開發(fā)通常都抱著排斥的態(tài)度,然而在Visual Studio.NET β版的發(fā)布時,眾多開發(fā)者們卻顯示出了從未有過的熱情。這種熱情決不僅僅是因為.net計劃的戰(zhàn)略重要性和微軟CEO巴爾默那情緒激昂的演講,更表達了開發(fā)者需要一個具有強大功能的開發(fā)平臺的迫切心情。
為了支持.NET平臺,Visual Studio.NET在原來的Visual Studio 6.0的基礎上進行了極大的修改和變更。在Visual Studio.NET β版中你會發(fā)現Visual J++消失了,取而代之的就是c#語言。至此,微軟也擺脫了被動局面。
雖然Visual Studio.NET仍處在測試階段,但集成在其中的微軟新的開發(fā)語言c#,卻已引起了眾多開發(fā)者的矚目。那么,c#究竟是由誰主持研發(fā)的呢?
■系出名門風頭強勁
設計一個新的開發(fā)語言——c#,對微軟未來的發(fā)展有著舉足輕重的意義,而這樣一項偉大而艱巨的任務,微軟又怎能不慎之又慎呢!誰將承擔此重任并成為開發(fā) C#的首席設計師將是微軟的一次“生死抉擇”。微軟最終決定由老將安德爾斯(Anders Hejlsberg)出馬,這絕對是最明智之選。
國內的很多人對安德爾斯可能并不了解,但一提起他的杰作Trubo Pascal和Delphi,可謂是家喻戶曉了。安德爾斯是原Broland公司的首席研發(fā)設計師,在Broland期間,安德爾斯開發(fā)了著名的 Trubo Pascal語言,并在其基礎上開發(fā)了面向對象的應用開發(fā)工具Broland Delphi,Delphi目前仍是Broland公司的最重要的旗幟性產品,并已成為了廣大開發(fā)人員最喜歡的RAD應用開發(fā)工具之一。安德爾斯來到微軟后,就直接主抓Visul J++的研發(fā)工作,這也是為什么你會在c#中發(fā)現很多Visul J++特性的原因。
名家一出手,便知有沒有!微軟選擇了安德爾斯,安德爾斯也沒有讓微軟失望,C#不但成功研發(fā)出來,而且其功能之強勁更是讓人為之一振!那么系出名門、風頭強勁的C#究竟有何強大功能,能給廣大開發(fā)者帶來什么好處呢?
■身懷絕技步入征程
在微軟的PDC 2000年會上,當演講者向各大公司的研發(fā)人員展示基于.NET的ASP+上用c#進行設計開發(fā)Web應用程序時,觀眾們報以了熱烈的掌聲。
長期以來,C/C++都是最為廣泛地應用于商用軟件開發(fā)中的開發(fā)語言,但其強勁的功能和靈活的使用卻同時伴隨著開發(fā)的復雜性,很多基于C/C++的研發(fā)人員后來都稱用C/C++進行開發(fā)如同噩夢一般。Java的出現改變了這一切。
Java是一個開放、標準、通用的網絡運算平臺,由于其強大的兼容性和跨平臺性,已經成為在互聯網技術領域被廣泛采用的一個成熟的技術平臺。但由于純 Java編程的應用系統其運行速度太慢,而且據Forrest的調查報告顯示,基于Java開發(fā)的應用系統目前也并沒有實現百分百的跨平臺,這使得 Java仍舊未能完全取代C/C++。
c#的出現給廣大程序開發(fā)者又多了一種選擇。微軟公司對C#的定義是:“c#是一種類型安全的、現代的、簡單的,由C和C++衍生出來的面向對象的編程語言,它是牢牢根植于C和C++語言之上的,并可立即被C和C++的使用者所熟悉。c#的目的就是綜合Visual Basic的高生產率和C++的行動力?!边@個定義是恰如其分的,因為在Visual Studio.NET的β版(見圖1)中,我們已經可以利用c#極其簡單地開發(fā)出強大的企業(yè)級分布式應用系統了。
需要提醒大家,脫離了.NET平臺而單純去講C#是沒有太大意義的,所以我們必須先了解一些.NET平臺開發(fā)的基礎知識,才能更深入了解c#的特性。
.NET框架的核心是基于XML的跨平臺跨語言的信息交換,基于此種平臺將十分有助于我們開發(fā)Internet分布式應用程序。
基于.NET的Web應用開發(fā)主要是使用ASP+,ASP+可以使用任何一種.NET支持的語言編寫,而其中C#可以提供腳本語言所無法提供的強大功能,使用C#編寫ASP+的Web應用程序在未來將成為Windows平臺上Web開發(fā)的最佳選擇。
了解了一些.NET平臺開發(fā)的基礎知識后,下面讓我們再來結合.NET看看c#的一些絕技:
快速應用開發(fā)(RAD)功能
支持快速開發(fā)(Rapid application development)可以說是目前開發(fā)語言最為重要的一大功能,也正是C/C++的致命傷。網絡時代應用系統的開發(fā)必須按照網絡時代的速度來進行,支持快速開發(fā)可以使得開發(fā)人員的開發(fā)效率倍增,從而使得他們可以從繁重的重復性勞動中解放出來。
c#的RAD功能主要表現在例如垃圾收集、指代等眾多特性上。垃圾收集機制將減輕開發(fā)人員對內存的管理負擔,而指代功能更是可以讓開發(fā)者不經過內部類就調用函數。利用c#的這些功能,可以使開發(fā)者通過較少的代碼來實現更強大的應用程序,并且能夠更好地避免錯誤發(fā)生,從而縮短了應用系統的開發(fā)周期。
語言的自由性
用C#編寫的程序能最大程度地和任何支持.NET的語言互相交換信息。能夠繼承和使用任何語言所編寫的程序可以稱得上是知識的繼承,這樣做的好處是節(jié)省了大量的工作,你不必把COBOL等語言強行改成另一種語言,.NET讓各種語言真正地互相交流了。
c#和其他.NET語言有著最好的協作,這點對開發(fā)人員非常重要。全球從事編寫軟件的人當中,大約有50%以Visual Basic作為基本的編程工具,在跨入.NET編程時代的時候,這些人輕松地使用了.NET的VB開發(fā)Web上的應用程序,想想以后你可以和你的那些只懂 VB的同事真正在一起共同開發(fā).NET的應用程序時,還有比這更讓人輕松和高興的事情嗎?
強大的Web服務端組件
在c#的Web編程中,最讓人興奮的是Web服務端的組件,它們不僅包括傳統組件,還包括那些能夠自動連接五花八門服務的可編程組件,你可以用c#編寫自己的服務器端組件,服務器端組件和標準的HTML提供的服務自然是不一樣的,使用它們可以更自由、更容易地進行數據綁定。不久,那些視頻服務器組件也很快會出現,有了這些強大的組件,我們可以設計出功能更加強勁的企業(yè)級分布式應用系統。
支持跨平臺
隨著互聯網應用程序的應用越來越廣,人們逐漸意識到由于網絡系統錯綜復雜,使用的硬件設備和軟件系統各不相同,開發(fā)人員所設計的應用程序必須具有強大的跨平臺性。C#編寫的應用程序就具有強大的跨平臺性,這種跨平臺性也包括了c#程序的客戶端可以運行在不同類型的客戶端上,比如PDA、手機等非PC裝置。
與XML的融合
由于XML技術真正融入到了.NET和c#之中,c#的編程變成了真正意義的網絡編程,甚至可以說.NET和c#是專為XML而設計,使用C#的程序員可以輕松用c#內含的類來使用XML技術。就這方面而言,目前c#提供給了程序員更多的自由和更好的性能來使用XML。
對C++的繼承
c#繼承并保留了C++強大的功能,例如, c#保留了類型安全的檢測和重載功能,c#還提供了一些新功能取代了一些原來的ANSI C預處理程序的功能,提高了語言的類型安全等安全性。
了解了c#如此眾多的特性,你是不是也感覺心動呢!身懷絕技的c#將在未來正式步入征程,與我們的程序開發(fā)人員攜手共進!
■沒有最好只有更好
由于Visual Studio.NET的正式版本將在今年某個時候才能推出,所以c#將真正成為新世紀的新語言。有人現在就在討論c#和Java的性能優(yōu)劣,其實這并沒有什么實際意義,因為c#和Java 都將隨著時代的發(fā)展而繼續(xù)發(fā)展,并不斷加以改進以適應新的開發(fā)需求,這正印證了一句著名的廣告詞:“沒有最好,只有更好”。
不久的未來,c#的應用也將如同Java一樣,飛速向數字電視、機頂盒、汽車、PDA、移動電話、呼機,甚至電冰箱等其他非PC裝置中進行推廣。
總之,只有在激烈的良性競爭下,我們才能更快、更好地促進應用開發(fā)技術的發(fā)展,才能更加快速地推動IT行業(yè)的大發(fā)展。不管怎樣,c#的確值得我們關注!