C#的前途如何?
發(fā)表時(shí)間:2024-02-19 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]這世界上沒(méi)有什么比編程工具更加牽動(dòng)程序員的心。VC、VB、DELPHI、JAVA……這些耀眼的名字不僅占據(jù)了程序員的生活,而且似乎已經(jīng)成為了某種信仰。可是,伴隨著新世紀(jì)的腳步,這些信仰又一次遭遇了重大的挑戰(zhàn)。微軟,這頭被法官和黑客們折騰得既疲憊又惱怒的獅子,發(fā)誓要保住它頭上的王冠,拼盡全力,拿出了...
這世界上沒(méi)有什么比編程工具更加牽動(dòng)程序員的心。VC、VB、DELPHI、JAVA……這些耀眼的名字不僅占據(jù)了程序員的生活,而且似乎已經(jīng)成為了某種信仰。可是,伴隨著新世紀(jì)的腳步,這些信仰又一次遭遇了重大的挑戰(zhàn)。微軟,這頭被法官和黑客們折騰得既疲憊又惱怒的獅子,發(fā)誓要保住它頭上的王冠,拼盡全力,拿出了看家的本事——.NET戰(zhàn)略。作為 .NET的核心開發(fā)語(yǔ)言,C# 順理成章地浮出了水面。程序員們也就不得不做出一個(gè)痛苦的選擇,跟在誰(shuí)的后面?要找出答案就不得不作一番比較和預(yù)測(cè)。筆者作為一個(gè)資深的程序員,斗膽在此狂言,權(quán)作拋磚引玉。
如果拋開一切非技術(shù)方面的因素,C# 無(wú)疑是這個(gè)星球上有史以來(lái)最好的編程語(yǔ)言,它幾乎集中了所有關(guān)于軟件開發(fā)和軟件工程研究的最新成果。面向?qū)ο、類型安全、組件技術(shù)、自動(dòng)內(nèi)存管理、跨平臺(tái)異常處理、版本控制、代碼安全管理……你不可能在另外的一種語(yǔ)言中找到所有這些特性。盡管像很多人注意到的一樣,當(dāng)我羅列上述特性時(shí),總是讓人想到JAVA,然而C# 確實(shí)走得更遠(yuǎn)。但現(xiàn)實(shí)的情況是,非技術(shù)的因素往往更能決定一個(gè)產(chǎn)品的未來(lái),尤其在計(jì)算機(jī)軟件的歷史上,技術(shù)卓越的產(chǎn)品,如OS/2、Mac OS、UNIX等,都敗在了Windows那漂亮的臉蛋兒下。而這一次,微軟的角色好像從一個(gè)赤手空拳的革命者變成了仗勢(shì)欺人的老地主,如果真是要變天,那C# 這孩子豈不是投錯(cuò)了胎?可能情形并非如此糟糕,畢竟瘦死的駱駝比馬大,而且C# 已經(jīng)提交給了一個(gè)標(biāo)準(zhǔn)化組織,一旦成了國(guó)際標(biāo)準(zhǔn),說(shuō)不準(zhǔn)真有哪個(gè)手癢的大俠(也有可能是微軟自己)給移植到Linux 和別的平臺(tái)上。那樣的話,JAVA可就慘了。因?yàn)镴AVA的用戶主要是網(wǎng)絡(luò)服務(wù)的開發(fā)者和嵌入式設(shè)備軟件的開發(fā)者,嵌入式設(shè)備軟件不是C# 的用武之地,而在網(wǎng)絡(luò)服務(wù)方面,C# 的即時(shí)編譯和本地代碼Cache方案比JAVA虛擬機(jī)具有絕對(duì)的性能優(yōu)勢(shì)。何況C# 一旦成為一個(gè)像C++ 一樣的公共的標(biāo)準(zhǔn),軟件開發(fā)商既可以省去JAVA的許可證費(fèi)用,也不必?fù)?dān)心成為微軟的奴隸,那些反微軟的人士和主張廠商獨(dú)立的人士可能也不會(huì)有什么意見。這可能正是微軟所期待的。
如果把C# 和 JAVA 在網(wǎng)絡(luò)服務(wù)領(lǐng)域的爭(zhēng)奪比作未來(lái)制空權(quán)的爭(zhēng)奪的話,那么C# 和傳統(tǒng)通用快速開發(fā)工具——VB、DELPHI等的較量將是地地道道的白刃戰(zhàn)?赡茏顟K的程序員就是VB程序員,在微軟,VB就像離任的克林頓,不但失去了所有的光輝,而且亂事纏身。想想吧,VB6寫的項(xiàng)目必須用轉(zhuǎn)換工具轉(zhuǎn)換成基于.NET的代碼才能在VB7中調(diào)入,幾乎面目全非。由于VB7遵循為迎合.NET而建立的通用語(yǔ)言規(guī)范(CLS),幾乎把所有原來(lái)只在C++、JAVA等語(yǔ)言中可以運(yùn)用的特性統(tǒng)統(tǒng)加了進(jìn)來(lái),只是語(yǔ)法和原來(lái)兼容。如果你是第一次在VB7中看到自己的舊VB6項(xiàng)目轉(zhuǎn)換之后的代碼,一定要當(dāng)心你的心臟!所以,努力吧,別告訴我你將就此退休。DELPHI的狀況也好不到哪里去,原來(lái)的看家本領(lǐng)是做起應(yīng)用來(lái)又快又好,可現(xiàn)在看看最新的VS.NET Beta 1, 你會(huì)感到如此熟悉,眾多的屬性列表、組件……誰(shuí)讓你窮呢,連總設(shè)計(jì)師都養(yǎng)不住。
其實(shí)在編程語(yǔ)言中真正的霸主多年來(lái)一直是C++,所有的操作系統(tǒng)和絕大多數(shù)的商品軟件都是用C++作為主要開發(fā)語(yǔ)言的。JAVA的程序員絕大多數(shù)也是C++的愛(ài)好者,PHP的成功里面也有類似C++的語(yǔ)法的功勞。在操作系統(tǒng)、設(shè)備驅(qū)動(dòng)程序、視頻游戲等領(lǐng)域,C++在很長(zhǎng)的時(shí)間內(nèi)仍將占據(jù)主要地位,而在數(shù)量最大的應(yīng)用軟件的開發(fā)上,C# 很可能取代C++的位置。首先,C# 和JAVA一樣,簡(jiǎn)直就是照搬了C++的部分語(yǔ)法,因此,對(duì)于數(shù)量眾多的C++程序員學(xué)習(xí)起來(lái)很容易上手,另外,對(duì)于新手來(lái)說(shuō),比C++要簡(jiǎn)單一些。其次,Windows是目前占?jí)艛嗟匚坏钠脚_(tái),而開發(fā)Windows應(yīng)用,當(dāng)然微軟的聲音是不能忽略的。最重要的是,相對(duì)于C++,用C# 開發(fā)應(yīng)用軟件可以大大縮短開發(fā)周期,同時(shí)可以利用原來(lái)除用戶界面代碼之外的C++代碼。
但是,C# 也有弱點(diǎn)。首先,在大量的現(xiàn)有Windows平臺(tái)上,C# 的程序還不能運(yùn)行,因?yàn)镃# 程序需要 .NET運(yùn)行庫(kù)作為基礎(chǔ),而 .NET運(yùn)行庫(kù)將作為新一代的Windows(Whistler)的一部分發(fā)行, 或以Service Pack的形式提交給Windows Me 和 Windows 2000用戶。所以在近期,C# 會(huì)主要在服務(wù)器上得到應(yīng)用。其次,C# 能夠使用的組件或庫(kù)還只有 .NET 運(yùn)行庫(kù)等很少的選擇,沒(méi)有豐富的第三方軟件庫(kù)可用,這需要有一個(gè)過(guò)程,同時(shí)各軟件開發(fā)商的支持也很重要。第三,JAVA的成功因素里有一些是反微軟陣營(yíng)的吹捧,雖然“只寫一次,到處運(yùn)行”只是一句口號(hào),但畢竟已經(jīng)是一種成熟的技術(shù)。而C# 的鼓吹者目前只有名聲不佳的微軟,且只能運(yùn)行在Windows上。實(shí)際上這兩種語(yǔ)言都不是不可替代的,理智的說(shuō),對(duì)軟件開發(fā)商而言,什么用的最熟什么就是最好的工具。尤其對(duì)C++的使用者,C# 沒(méi)有帶來(lái)任何新東西,因?yàn)?NET運(yùn)行庫(kù)在C++中也可以使用,沒(méi)有要換的絕對(duì)的理由。
綜上所述,我個(gè)人認(rèn)為,近幾年,C# 將不可避免地崛起,在Windows平臺(tái)上成為主角,而JAVA將在UNIX、Linux等平臺(tái)上成為霸主,C++ 將繼續(xù)在系統(tǒng)軟件領(lǐng)域大展拳腳。非常有意思的是,這些語(yǔ)言的語(yǔ)法極其接近,因?yàn)镴AVA和C# 都是由C++發(fā)展而來(lái)的。其他的開發(fā)工具當(dāng)然還會(huì)在相當(dāng)長(zhǎng)的時(shí)間里繼續(xù)他們的旅程,不過(guò)在市場(chǎng)份額上,將不可避免地受到?jīng)_擊。