其實很久以前我就想寫這篇文章,其原因一方面是因為筆者深深感覺到C++ Builder的確是一個先進與強大的程式開發工具,但更最重要的一點是,我深信C++ Builder能給公司帶來巨大了商業利益與生產力的大幅提升,我可以假裝沒看到這幾點,但是基於良心與責任我不能不花點時間來跟大家分享一下我的看法與心得。
C++ Builder的前身是Borland C++,Borland C++ 所使用的 Application Framework是OWL,而OWL以物件導向的角度來看,也的確比MFC先進很多(這在學界早有定論),但是在市場上卻叫好不叫座,直到Imprise(以前的Borland)推出以VCL為Application Framework的Delphi之後,這才一炮而紅。
雖然Delphi的VCL非常強大與好用,但是Delphi所使用的是OOPascal語法,和C++不同,直到後來,Imprise才推出以C++為程式語言的C++ Builder,而其所使用的Application Framework正是赫赫有名的VCL。
VCL的全名是“Visual Component Library“,它是一種新一代的Application Framework,以元件化、視覺化為設計的方向。VCL的興起,起源於OWL和MFC都日見龐大與癡肥,不利於日益復雜的程式開發趨勢,於是Imprise的設計小組決定開發一套更物件導向化的Application Framework,使程式設計師能以視覺化的觀念、元件重用的觀念來快速設計出各式各樣的應用程式,將物件導向的威力與精髓發揮的淋漓盡致,相形之下,OWL和MFC都只算過時與半子的Application Framework。
果然~C++ Builder一推出後,在微軟的大軍壓境下以及人們西瓜靠大邊的心態下,仍然引起了一陣旋風,在News上許多程式師表示它們對C++ Builder的肯定與激賞,更有人指出,根據經驗,在微軟的市場優勢之下,Delphi和C++ Builder仍能欣欣向榮,這表示Delphi和C ++ Builder的產品水准不是只贏微軟產品幾個百分點,而是數十至數百個百分點,否則Imprise的產品早就消失不見了。
到底C++ Builder的特性與優點在哪裡呢?這對於我們公司又有什麽利弊呢?我的觀點與分析如下。大家想一想,當我們使用Visual C++來開發程式的時候,最痛苦的事情是什麽?答對了~那就是GUI的設計。根據經驗,通常我們利用Visual C++開發一套軟體時,設計GUI所花的時間幾乎占掉程式開發周期的三分之一~甚至到二分之一以上,而設計和界面無關的核心程式通常只占了不到二分之一左右至三分之二的時間,但是使用C++ Builder則可以大幅簡化這個問題。C++ Builder的VCL提供大量的各式各樣GUI軟體元件,讓我們可以將大部分的心力放在核心程式碼的設計上,而不必跟Windows系統的訊息、界面去搏斗。
C++ Builder的Compiler在功能上跟Visual C++都一樣,Win32 API等都可以呼叫與使用(VCL就是架構在Win32 API之上,沒有不相容的問題,只是包裝的更高明,也非常有彈性),你不用擔心目前有什麽事情是Visual C++可以做而C++ Builder做不到的,進而拒絕使用C++ Builder,抱持這樣的觀點就似乎為了健康而不坐汽車,卻堅持騎腳踏車從淡水來上班一樣因噎廢食,在網路許多非常有經驗的程式設計師會告訴你這是多慮了。曾有人比喻的很傳神,假如Visual C++是手排車,那C++ Builder就是手自排兩用車(看過三菱的Sportsmode手自排兩用車嗎?)。
C++ Builder的程式設計細節是清楚而透明的,除了Application Framework的運作保有神秘感之外(MFC也是),所有的程式碼與檔案相關的檔案都是可以把握與觀看的,不像某些開發工具,程式設計師許多事情是無法把握的,而C++ Builder 所產生的碼大小與產生的時間都和Visual C++ 都是同級的(我指的是勝敗差距都不大,到要一提的是,C++ Builder 3.0采用一種技術,可以使得第二次以後的Compiling速度提升五倍以上,筆者可以證實這一點)。
我的觀點是,我們公司非常適合大量采用C++Builder作為程式開發工具,當然啦,為了相容性的考量和母公司有非凡要求的專案除外。由Visual C++轉換到C++ Builder不是很嚴重與痛苦的事情,反而會覺得很快樂,這就似乎開手排車人改學自排車一樣,甚至可以更把握C++ Builder的威力。
利用C++ Builder來開發程式,我們可以快速的產生程式的GUI layout和prototype,在後續調整程式界面的調整周期中也非常的方便,我個人認為至少可以比
Visual C++節省三至五倍以上的時間。
除了某些非凡需求的專案之外(例如版本升級,而原來的版本是VC開發的,或者參考改寫的程式碼是用VC寫的,事實上C++ Builder也可以支援MFC),我看不出來公司有什麽專案的規模或內容非要靠Visual C++不可,自己找罪受不說,也違反了“Build a high performance company“的目標,而將大量的資源投注在落後的工具上,程式生產力也無法巨幅提升。因此我建議公司應該大量而全面性的鼓勵員工使用並熟悉C++ Builder成為第一線的程式開發工具,根據我的淺見,這樣的投資不但回收快速,而且效果宏大。
簡而言之,C++ Builder同時兼具C++程式語言的威力和Visual Basic這種 Rapid
Development Tool的視覺化程式開發環境的便利,土法煉鋼或必先利其器,決定就在你了。