上位機(jī)編程軟件的選擇對眾多初學(xué)者來說,絕對是一個(gè)難以決策的事情。在作為一種編程工具的意義上,我們認(rèn)為各個(gè)軟件如:CB(C++Builder) 和VC(VisualC++)沒有什么本質(zhì)的區(qū)別。就像Word2000 和WPS2000 在本質(zhì)都是字處理軟件一樣,對于語言就象我們都用中文在Word2000 和WPS2000 寫文章表達(dá)我們思想。CB和VC都是用C++。其它軟件都有相同或不同的語言。如VB用的是Basic語言,Delphi用的Pascal語言。
由于應(yīng)用不同的領(lǐng)域,所以選擇的條件也不同。如果你主要是從上位機(jī)傳傳參數(shù)設(shè)置,顯示一些簡單的狀態(tài),而以下位機(jī)控制為主,則所側(cè)重于快速上手應(yīng)用,而不需要去深入研究。當(dāng)然還要考慮從你熟悉的語言相結(jié)合。下位機(jī)編程一般用C語言和匯編,當(dāng)然你也可能用其它語言。如果你僅會(huì)這兩種,那么上位機(jī)就考慮和其差不多的C或C++來編寫。如果你也會(huì)其它的語言,當(dāng)然選擇范圍更廣一些。由于C對界面操作上的復(fù)雜化,所以我們一般不會(huì)用C來寫一界面類的東西。接下來進(jìn)一步縮小了選擇范圍,所以只有VC和CB比較適合了。
對于此兩款軟件歷來爭議較大。VC有大量的教材和實(shí)例程序,還有微軟的支持;而CB雖然有良好的界面組件,但相關(guān)資料確實(shí)很少,你到任意一家書店,很難找到幾本象樣的教材,有的剩至根本沒有,有的只是N多年前對幫助文件翻譯過來東西,而VC最少有一架或幾架的各類書藉。這是讓初學(xué)CB最為頭大的事情,不過現(xiàn)在還好,由于互聯(lián)網(wǎng)的強(qiáng)大,和廣大CB愛好者的熱心。網(wǎng)絡(luò)上CB的資料已經(jīng)很多了。
通過上面的分析我們可以作出一些考慮,如果以下位機(jī)為主可以選擇CB,以上位機(jī)為主可以選擇VC或CB。當(dāng)然僅作參考,還一句話沒有最好的軟件,只有最適合你的軟件。以下引用《C++ Builder教程》的節(jié)選:
但現(xiàn)在我們要從另外一個(gè)角度討論C++ Builder 這個(gè)編程工具。這個(gè)角度就是“封裝”——面向?qū)ο缶幊趟枷胫械淖钪匾彩亲罨A(chǔ)的概念。一個(gè)要學(xué)習(xí)編程的人,可能從C 開始學(xué)起。學(xué)C 時(shí),我們沒有接觸那些挺玄的概念,到了C++,一切就來了,什么面向?qū)ο?,什么封裝、繼承、多態(tài)……于是我們興奮起來,努力去理解、掌握,運(yùn)用這些概念所代表的技術(shù),在掌握這些別人暫時(shí)未能理解的概念之后而頗有成就感……。
現(xiàn)在我要問的是,為什么要有這些概念?這些技術(shù)?正確回答這個(gè)問題,不僅有助于我們今后對編程語言各種概念的學(xué)習(xí),而且它能讓我們避免成為新技術(shù)的奴隸,這一切也許聽起來有些形而上,不過我想通過以下討論,至少可以回答一個(gè)很現(xiàn)實(shí)的問題:為什么要選C++Builder?而不是我們更常聽的VC?這是我碰到的編程初學(xué)者較疑惑的問題之一。
如果人類長有翅膀,那么飛機(jī)大抵永遠(yuǎn)不會(huì)被發(fā)明。飛機(jī)的發(fā)明,是為了彌補(bǔ)人類自已不能飛翔的缺陷。不能說所有的技術(shù)都是這樣,但C++對于C 的發(fā)展,完全是為彌補(bǔ)程序員腦力的不足。一個(gè)在校生在學(xué)會(huì)C 后,往往并沒有機(jī)會(huì)用C 去實(shí)踐一個(gè)大中型的項(xiàng)目,體會(huì)不到在一個(gè)龐大軟件工程中,非面向?qū)ο笳Z言的短處,所以在之后學(xué)習(xí)C++的過程中,也就很難真正體會(huì)到面向?qū)ο笳Z言的長處。簡短一點(diǎn)說:不知道C 的短處,就不懂C++的長處。相反,倒是很快就發(fā)現(xiàn)C++的缺點(diǎn):它的代碼效率多數(shù)情況下都要比C 低不少。
前面我們說過低級語言與高級語言的對比,C++語言也正是從語法結(jié)構(gòu)和語言功能上來限定或?qū)崿F(xiàn)一門編程語言更加接近人在現(xiàn)實(shí)生活中的思維習(xí)慣,從而達(dá)到減輕人的記憶和判斷上的負(fù)擔(dān)。這其中最佳的方法之一就是所謂的“封裝”。
VC 的封裝類庫稱為MFC,它是一種很低階的封裝,它并沒有按照人類的思維習(xí)慣來重新組織和解釋W(xué)indows 對象(指Windows 編程中所需的數(shù)據(jù),處理,機(jī)制,接口), 而純粹是API 一對一的翻版。這樣的封裝工作帶來代碼封裝所固有的代碼效率降低的副作用,卻沒有給使用者帶來任何方便。如果你是編程初學(xué)者,而你身邊又有VC 高手,那么你一定要多多向他學(xué)習(xí)請教,因?yàn)橐粋€(gè)真正的VC 編程高手,其同時(shí)一定也是一個(gè)深刻理解Windows 內(nèi)核機(jī)制(消息循環(huán),內(nèi)存管理,多任務(wù)實(shí)現(xiàn),資源使用等),熟悉Windows各種常用API 函數(shù)等等的高手。
C++Builder 對封裝庫稱為VCL(帶VC 字樣,可別以為它是Visual C++,其實(shí)它是:Visual Component Library,即:可視控件庫)。
VC 的MFC 和CB 的VCL 都是基于(但不限于)對Windows API(應(yīng)用程序接口函數(shù))的封裝,為什么要對API 進(jìn)行封裝?這就是回到了我們前面說過的,為什么有了C 又會(huì)有C++的問題。因?yàn)椴僮飨到y(tǒng)是用C 和匯編寫成的,它獲得到操作系統(tǒng)必須的代碼效率,但對應(yīng)用程序開發(fā)者而言,它失去了易用性。所以微軟和Borland 都使用高級語言對之進(jìn)行封裝工作。二者誰進(jìn)行得更好呢?
要想成為Windows 編程高手,最終一定要繞過各種封裝,理解Windows 對象。但作為一個(gè)初學(xué)者,我們必須挑選一個(gè)好的封裝。