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