1.引言
我們經(jīng)常會問這樣的問題“:到底什么使得Delphi如此優(yōu)秀?”和“為什么和別的編程工具相比,我更愿意選擇Delphi?”等等。簡而言之就是:高效性。決定一個軟件開發(fā)工具效率的因素歸結(jié)為以下五點:①可視化開發(fā)環(huán)境的性能。②編譯器的速度和已編譯代碼的效率。③編程語言的功能及其復雜性。④數(shù)據(jù)庫結(jié)構(gòu)的靈活性和可擴展性。⑤框架對設(shè)計和使用模式的擴充。
2.Del phi的特點
2.1可視化集成開發(fā)環(huán)境
可視化開發(fā)環(huán)境通常分為三個組成部分:編輯器、調(diào)試器和窗體設(shè)計器。和大多數(shù)現(xiàn)代RAD(快速應(yīng)用開發(fā))工具一樣,這三部分是協(xié)同工作的。當你在窗體設(shè)計器中工作時,Delphi在后臺自動為你正在窗體中操縱的控件生成代碼。你還可以自己在編輯器中加入代碼來定義應(yīng)用程序的行為,同時還可以在同一個編輯器中通過設(shè)置斷點和監(jiān)控點等來調(diào)試程序。
在版本5里,Delphi的調(diào)試器具備了許多先進的功能,如遠程調(diào)試、過程關(guān)聯(lián)、DL斷口包調(diào)試、自動本地監(jiān)控以及CPU窗口等。Delphi還支持在調(diào)試時隨意放置和停靠窗口并把這一狀態(tài)保存為命令的桌面設(shè)置。由此,Delphi的IDE實現(xiàn)了對調(diào)試功能的良好支持。對RAD工具(如Delphi、Visual Basic、C++Builder和PowerBuilder等)來說,窗體設(shè)計器是一項獨特的功能。一些更為經(jīng)典的開發(fā)環(huán)境,如VC++和BC++,都提供了對話編輯器,但卻沒有將窗體設(shè)計器集成到開發(fā)流程中,沒有窗體設(shè)計器將會降低開發(fā)工具的整體效率。幾年來,Delphi與Visual Basic在完善窗體設(shè)計器的功能方面展開了激烈的競爭。Delphi的窗體設(shè)計器的與眾不同之處在于,Delphi是建立在一個真正面向?qū)ο蟮目蚣芙Y(jié)構(gòu)基礎(chǔ)之上的。這樣,你對基類所做的改變都將會傳遞給所有的派生類。這里涉及的一項關(guān)鍵技術(shù)就是VFI(visual form inheritance),即可視化窗體繼承。VFI技術(shù)使你能夠動態(tài)地繼承當前項目或?qū)ο髱熘械娜魏纹渌绑w。一旦基窗體發(fā)生改變,派生的窗體會立即予以更新。
2.2編譯器的速度和已編譯代碼的效率
Pascal編譯器最著名的特點就是速度快,而Delphi正是建立在這種編譯器的基礎(chǔ)之上的。事實上,它可能是針對windows的最快的高級語言本地代碼編譯器。以往速度很慢的C++編譯器在近年來取得了很大的進步,增加了鏈接和各種緩存策略,尤其是在VISua1C++和C++Builder中。但即便如此,C++的編譯器還是比Delphi的慢了幾倍。Delphi和C++Builder共享同一種編譯器后端,是一個公司的產(chǎn)品,因此生成的代碼等效于由一個優(yōu)秀的C++編譯器生成的代碼。
2.3編程語言的功能及其復雜性
C++是非強類型語言,有些錯誤編譯器無法發(fā)現(xiàn)。Object Pascal和Java很相似,它們很好地把握住了復雜性和功能性的平衡。它們都采取了這樣一種途徑,即限制其可用功能以加強開發(fā)者的邏輯設(shè)計。例如,兩者都避免了完全面向?qū)ο蟮珔s容易被濫用的多重繼承的觀念,而是實現(xiàn)了一個執(zhí)行多重接口功能的類。兩者都不支持美觀卻危險的操作符加載。兩者都有一些強大的功能,諸如異常處理、運行期類型信息(RTT工)和生存期內(nèi)存自管理字符串。特別是運行期類型信息(RTTI),對我們設(shè)計仿真培訓系統(tǒng)中的操作站與現(xiàn)場站很重要,用它我們可根據(jù)組態(tài)數(shù)據(jù)庫的數(shù)據(jù)在運行期自動創(chuàng)建組件和自動識別組件而賦給相應(yīng)的數(shù)據(jù)。同時,Delphi使用編程語言是Object Pascal,是面對對象、強類型語言。有利編制穩(wěn)健的應(yīng)用程序,減少調(diào)試、檢錯時間以提高開發(fā)效率;有利描述真實世界的事物和系統(tǒng),如控制系統(tǒng)、工藝數(shù)學模型。
2.4數(shù)據(jù)庫結(jié)構(gòu)的靈活性和可擴展性
由于Borland缺少一種數(shù)據(jù)庫計劃,因此Delphi保留了我們認為是所有工具中最靈活的數(shù)據(jù)庫結(jié)構(gòu)。對大多數(shù)基于本地、客戶服務(wù)器和ODBC數(shù)據(jù)庫平臺的應(yīng)用程序來說,BDE的功能都非常強大。如果你對此不滿意,可以避開使用BDE以支持新的本地ADO組件。如果你沒有裝ADO,可以自己創(chuàng)建數(shù)據(jù)訪問類或者購買第三方數(shù)據(jù)訪問解決方案。此外,MIDAS使對數(shù)據(jù)源的多層訪問更易于實現(xiàn)。而Microsoft的工具(ODBC、OLEDB或者其他)從邏輯上來說趨向于支持Mi-crosoft自己的數(shù)據(jù)庫和數(shù)據(jù)訪問解決方案。
2.5框架對設(shè)計和使用模式的擴充
這是一項經(jīng)常被其他軟件設(shè)計工具忽略了的重要功能。VCL是Delphi最重要的組成部分。在設(shè)計時操縱組件、創(chuàng)建組件、使用面向?qū)ο蠹夹g(shù)繼承其他組件的行為,這些能力都是決定Delphi效率的關(guān)鍵因素。在許多場合,編寫VCL組件都采用固定的00設(shè)計方法。相比之下,其它基于組件的框架經(jīng)常過于死板或過于復雜。比如ActiveX控件具有和VCL控件相同的設(shè)計期性能,但卻不能被繼承以創(chuàng)建一個具有其他不同行為的新類。傳統(tǒng)的類框架,如OWL和MFC,需要你有大量的內(nèi)部結(jié)構(gòu)知識,而且如果沒有RAD工具的設(shè)計期支持,其功能將會受到抑制。
3.Del phi的事件驅(qū)動機制
3.1無約定編程
與傳統(tǒng)的Windows消息機制相比,Delphi的事件處理機制的最大優(yōu)勢在于所有的事件都是無約定的。對程序員而言,無約定就是指可以在事件處理程序中什么都不干。而在傳統(tǒng)的Windows消息機制中,就不得不調(diào)用基類的消息處理程序,還要把信息回傳給Windows。當然,Delphi的事件處理機制的無約定的編程方式可能無法對消息進行直接的靈活有效的處理,你要受制于誰引發(fā)了這一事件以及應(yīng)用程序?qū)@一事件要做出什么響應(yīng)等。例如,可以在OnKeyPress處理程序中修改和取消擊鍵,但onResize事件處理程序卻只能提供這一事件已發(fā)生的通知而無法進一步防止或控制尺寸的改變。
![]() | ![]() .. 定價:¥225 優(yōu)惠價:¥213 更多書籍 |
![]() | ![]() .. 定價:¥133 優(yōu)惠價:¥133.0 更多書籍 |