C++太復(fù)雜了,任何一個(gè)使用C++開(kāi)發(fā)者的企業(yè)必將付出更多的成本,因?yàn)閮?yōu)秀的C++程序員是少而又少。基于軟件企業(yè)化的需要,人們很自然地需要一種簡(jiǎn)單易用、面向?qū)ο蟆踩`活的"新一代Windows服務(wù)"(Next Generation Windows Services,簡(jiǎn)寫(xiě)為NGWS)應(yīng)用程序的語(yǔ)言,于是C#出現(xiàn)了。它全方位簡(jiǎn)化了C++的功能,使其具有C++所沒(méi)有的簡(jiǎn)單易學(xué)的優(yōu)勢(shì)。它既沒(méi)有C++"悲劇性"的指針概念,也沒(méi)有類(lèi)似"::"、"."和"->"的"愚蠢"操作。 滾滾長(zhǎng)江東逝水,浪花淘盡英雄。雖說(shuō)是個(gè)人英雄的時(shí)代已經(jīng)成為過(guò)去,但我們?nèi)匀徊荒軐?duì)這樣的榜樣們有所忘懷,他們是WPS求伯君、CCDOS嚴(yán)援朝、2.13吳曉軍、四通利方王志東、CCED朱崇君、UCDOS鮑岳橋等。因?yàn)樗麄儾粌H是成名的優(yōu)秀程序員,也不僅是在寫(xiě)文章時(shí)所必須想到的人物,更主要的是他們激蕩了很多批程序員的編程熱情,堅(jiān)定了學(xué)會(huì)匯編和C就能走天下的決心和勇氣,他們代表著以往中國(guó)軟件業(yè)的輝煌。 多年來(lái),我們一直就這樣追隨著,也不曾懷疑過(guò)有什么不對(duì)的地方。即使在DOS已成為過(guò)去,Windows和Internet獨(dú)霸天下的今天,我們也不曾懷疑過(guò)。 我們能懷疑嗎?我們眼見(jiàn)的實(shí)例太多了。我們不是看到Linux等操作系統(tǒng)和許多應(yīng)用程序的內(nèi)核都是用C來(lái)編制的嗎?即使在高校的計(jì)算機(jī)或非計(jì)算機(jī)專(zhuān)業(yè)中,C/C++程序設(shè)計(jì)課程的廣泛開(kāi)設(shè)不也是一個(gè)極好的證明嗎?Norton Utility 首席設(shè)計(jì)師Enrique Salem不是也認(rèn)為"每個(gè)人都應(yīng)當(dāng)使用C++"嗎? 難道還有什么懷疑嗎? 誠(chéng)然,我們不能否認(rèn)C/C++語(yǔ)言的超凡魅力。然而我們不禁要設(shè)問(wèn),在Windows流行的今天,用Windows C編制出界面獨(dú)特、功能強(qiáng)大的應(yīng)用程序,你能嗎?即使能,你需要多少時(shí)間? 在有許多程序開(kāi)發(fā)工具可供選擇的今天,強(qiáng)調(diào)"C/C++是程序程序員所必須掌握的語(yǔ)言"難道就沒(méi)有人真的敢站出來(lái)提出質(zhì)疑嗎? 其實(shí),在網(wǎng)絡(luò)一統(tǒng)天下的今天,任何應(yīng)用程序都必須經(jīng)過(guò)網(wǎng)絡(luò)的驗(yàn)證。誰(shuí)的軟件好用,誰(shuí)就會(huì)被認(rèn)可。為了能達(dá)到這樣的目標(biāo),許多Windows程序員都選擇了簡(jiǎn)單易學(xué)、能快速有效地開(kāi)發(fā)的Visual Basic、Dephi等工具。E_book電子閱讀器就是其中一例,它是李曉東用VB設(shè)計(jì)的。 如果這顯得太過(guò)蒼白無(wú)力的話(huà),那么讓我們先來(lái)看看C語(yǔ)言從過(guò)去到現(xiàn)在的發(fā)展歷程,看看它為什么這么發(fā)展。 眾所周知,C語(yǔ)言是在70年代發(fā)展的語(yǔ)言,由于當(dāng)時(shí)人們?cè)O(shè)想一種集低級(jí)語(yǔ)言和高級(jí)語(yǔ)言?xún)?yōu)點(diǎn)于一身的語(yǔ)言,于是C語(yǔ)言就誕生。基于它的簡(jiǎn)結(jié)、緊湊、方便和靈活,它很快就成為國(guó)際上廣泛流行的語(yǔ)言。 然而,C語(yǔ)言終究是面向過(guò)程的語(yǔ)言,數(shù)據(jù)和處理數(shù)據(jù)的程序是分離的。當(dāng)對(duì)某段程序進(jìn)行了修改或刪除時(shí),整個(gè)程序中所有與其相關(guān)的部分都要進(jìn)行相應(yīng)的修改,從而程序代碼的維護(hù)比較困難。為了避免這種情況的發(fā)生,在C的基礎(chǔ)上中引用了面向?qū)ο蟮脑O(shè)計(jì)方法。它是將數(shù)據(jù)及處理數(shù)據(jù)的相應(yīng)函數(shù)"封裝"到一個(gè)類(lèi)中,而使用類(lèi)數(shù)據(jù)變量則稱(chēng)為對(duì)象。在一個(gè)對(duì)象內(nèi),只有屬于該對(duì)象的函數(shù)才可以存取該對(duì)象的數(shù)據(jù)。這樣,其他函數(shù)就不會(huì)無(wú)意中破壞它的內(nèi)容,從而達(dá)到保護(hù)和隱藏?cái)?shù)據(jù)的效果。這就是C++。當(dāng)然,面向?qū)ο蟮腃++還支持多重繼承、模板、操作符重載、內(nèi)聯(lián)函數(shù)定義、預(yù)處理、宏、全局靜態(tài)類(lèi)變量、嵌套類(lèi)定義等等。 C++太復(fù)雜了,任何一個(gè)使用C++開(kāi)發(fā)者的企業(yè)必將付出更多的成本,因?yàn)閮?yōu)秀的C++程序員是少而又少。基于軟件企業(yè)化的需要,人們很自然地需要一種簡(jiǎn)單易用、面向?qū)ο蟆踩`活的"新一代Windows服務(wù)"(Next Generation Windows Services,簡(jiǎn)寫(xiě)為NGWS)應(yīng)用程序的語(yǔ)言,于是C#出現(xiàn)了。它全方位簡(jiǎn)化了C++的功能,使其具有C++所沒(méi)有的簡(jiǎn)單易學(xué)的優(yōu)勢(shì)。它既沒(méi)有C++"悲劇性"的指針概念,也沒(méi)有類(lèi)似"::"、"."和"->"的"愚蠢"操作。 因此我們也可以說(shuō),C#才是程序員們所必須掌握的語(yǔ)言。但是,我們不能忽視這一點(diǎn),語(yǔ)言總歸是程序員的工具,誰(shuí)具有簡(jiǎn)單易用、支持最新技術(shù)并能快速有效地進(jìn)行軟件開(kāi)發(fā),誰(shuí)就是程序員的工具。 如果上述的結(jié)論還不能接受的話(huà),那么讓我們看看現(xiàn)在C++程序員的窘境吧! 就目前而言,選擇C++就意味著選擇Visual C++,而不C++ Builder。這是C++程序員第一件讓人頭痛的事。因?yàn)閂C與Windows 98/NT同出一爐,相同功能的Visual C++應(yīng)用程序編譯后,其大小要比C++ Builder小得多。不僅如此,其穩(wěn)定性和完善程序要比C++ Builder要強(qiáng)得多。 但是"Visual C++"這個(gè)名字曾誤導(dǎo)了很多人,他們認(rèn)為自己買(mǎi)了一套完全可視的編程系統(tǒng),類(lèi)似于Visual Basic,并在剛開(kāi)始的幾天總這樣幻想。然而不久,人們認(rèn)識(shí)到他們必須實(shí)際編寫(xiě)和閱讀C++代碼。雖然Visual C++向?qū)Э梢怨?jié)約時(shí)間和提高正確性,但程序員必須理解向?qū)a(chǎn)生的代碼,最主要的,還必須理解Microsoft Foundation Class(MFC) Library的結(jié)構(gòu)和Windows操作系統(tǒng)的內(nèi)部工作方式。許多C/C++的DOS平臺(tái)的程序員把這種工作方式評(píng)價(jià)為"枯燥且艱深晦澀"的過(guò)程。盡管新版本的Visual C++6.0提供了控制臺(tái)應(yīng)用程序類(lèi)型,使DOS程序員能方便地進(jìn)入MFC應(yīng)用程序的開(kāi)發(fā),但仍然不能從根本上改變上述弊端。 選擇了Visual C++,就必然選擇MFC,一種程序結(jié)構(gòu),一種編程風(fēng)格。但由于MFC是OWL同時(shí)代的產(chǎn)物,已經(jīng)落后于VCL一個(gè)時(shí)代了。從開(kāi)發(fā)出基于ATL的WTL可以反襯出MFC的不足。這恐怕是Visual C++程序員最窘的地方。 但我們暫且不提MFC過(guò)時(shí)的尷尬,單是稍稍地改變一下應(yīng)用程序的外觀,Visual C++已是力不從心了。例如,想要改變控件的字體和背景,你得重新生成一個(gè)類(lèi),而VB只需更改一下屬性。從Visual C++界面設(shè)計(jì)的網(wǎng)站的火爆可見(jiàn)一斑。 不僅如此,Visual C++程序員也時(shí)常感到另外一種尷尬,一個(gè)小小的BMP、JPG圖片顯示,在Visual Basic中輕而易舉的事件,到了VC居然需要那么多的代碼,而且在數(shù)據(jù)庫(kù)應(yīng)用程序的開(kāi)發(fā)中還常發(fā)生許多一些細(xì)微的錯(cuò)誤,令程序員們大為惱火。更為甚者,如果有人還想用Visual C++編寫(xiě)Internet/Intranet程序的話(huà),那簡(jiǎn)直就是自尋煩惱。 雖然,一個(gè)優(yōu)秀Visual C++程序的薪水要比其他程序員高。但是,他所花費(fèi)的精力不是其他程序員能比擬的,他不僅需要承擔(dān)高昂的培訓(xùn)費(fèi),而且還要承擔(dān)90%不成功的概率。這恐怕是想成為Visual C++程序員的人最苦惱的事 當(dāng)然,我們不是勸你放棄使用C/C++語(yǔ)言,相反還十分支持。因?yàn)槭褂肅/C++編寫(xiě)的程序結(jié)構(gòu)和算法能被更多人接受,畢竟C影響了整整20個(gè)年頭。但是時(shí)過(guò)今天,我們還能靠它來(lái)"謀生"嗎? 相信你已經(jīng)有了自己的答案。當(dāng)然,我們之所以跳出來(lái),是希望程序員們不單是在這個(gè)方面去思考,更主要的是:在我們國(guó)家軟件發(fā)展浪潮到來(lái)的今天,我們不能再盲從,我們應(yīng)該關(guān)注軟件產(chǎn)業(yè)、關(guān)注互聯(lián)網(wǎng)產(chǎn)業(yè)、關(guān)注信息產(chǎn)業(yè)。我們也應(yīng)該有自己的歸宿,難道印度軟件大國(guó)給我們的啟示還不夠多嗎?
|