Delphi 2010已於近日由Embarcadero公司發布。作者Kim Madsen作為一名資深的Delphi開發者,在他的博客中談到了Delphi 2010的新性能、它的使用感受以及對Delphi語言未來的期望。博文如下:
Delphi 2010使用的第一感覺是:是時候為它拋棄Delphi 7了。
Delphi 2010比以往的Delphi版本都要快,而且它保留了一些Delphi 7的特性,比如可以將舊的條形控件(componentbar)找回。但這同時也帶了相關的問題(比如在重啟Delphi 2010之後componentbar的位置看起來挪動了),不過這只是細節問題,相信在之後的修補中會解決這個問題。
在D2005, D2006, D2007和 D2009中,IDE中都有不少漏洞,以至於內存會迅速被洩露導致IDE以及電腦的其他部分特別地慢。盡管從D2005到D2009,Delphi已經做了很多努力,但這種漏洞仍然存在,開發者不得不經常重啟IDE來避免內存洩露。
然而在Delphi 2010中我們欣喜地發現內存洩露的問題得到了解決,以前我從事很復雜的項目開發,很難做到個把小時都不重啟電腦,但現在已經不用重啟了。另外,IDE的響應也得到了顯著的提升,啟動時間比D2009快了不少。
D2010還有許多其他組件的性能提升,但我個人感覺新增的手勢支持(gesture support)是個很有趣的特性。手勢支持(gesture support)的意思是你可以做出特殊的鼠標移動來向應用發送一個命令信號。就好像是用的不是鼠標而是觸摸屏,因此也有可能做出像iPhone的觸摸屏一樣的界面。我想這是一個很重要的特性,除了手勢性能以外,更大的意義在於它表達出了Delphi在桌面端的發展方向。
以前我曾寫博文诟病過Delphi在桌面領域的表現,因為像Adobe Flex和MS WPF等開發工具功能強大而齊全,可以以相對簡單的方法開發出很酷的客戶端應用,而用Delphi卻很費勁;我也曾诟病過Delphi在服務器領域的表現,而且它的市場由於Java和.Net而大幅縮水,而且由於缺少跨平台的兼容性、拋棄傳統的Kylix編輯器而喪失了Linux的支持,Delphi在競爭對手面前淪為開發者的末端選擇。這種境況在今日仍然如此,但是在過去的六個月中,Embarcadero公司宣布計劃將支持Mac和Linux的跨平台編譯,無疑這是Delphi向前發展的一大步。
由於全新的手勢支持以及跨平台的計劃,Delphi在未來幾年有望贏過競爭對手並重新奪回市場份額。當然這取決於跨平台特性的最終性能,而且Embarcadero也不應當放松對手勢支持的控制和研發,畢竟這是它桌面應用的方向。
那麼Delphi還應當在哪些方向繼續努力呢?
*改良數據綁定。現在的Delphi唯一的綁定是用特殊的數據源綁定有意識的控制(TDataSource和TDBxxx組件)。這一特性在當年剛推出的時候非常酷,但是它現在已經被.Net和Adobe Flex/Flash 4超越,因為.Net和Adobe Flex/Flash 4有兩種方式可以將任何屬性綁定到其他屬性。因此,需要拋棄現有的Delphi DB控制,增加先進的自動的兩種綁定方式。
*優化現有的TCanvas和Device Contexts,從而可以將任何控制放在畫布(Canvas)上,讓畫布自動浮動在3D空間。這將給開發者帶來新的用戶界面,比現有的2D更有感覺。舉個例子:在顯示器幀值一定的情況下,如果你想呈現產品清單軟件中的多個產品的細節,你就要經常使用目錄,點擊列表中的項目以在窗口上顯示產品的細節,或者添加許多產品標簽才能實現。然而這兩種方法都不能同時展現產品和信息。如果使用Apple CoverFlow會怎樣呢:就可以在3D空間中展示產品信息了。結合手勢控制和觸摸屏,開發者使用手指就可以浏覽產品。雖然它的硬件要求比2D更高,但是現在即便最普通的PC都可以滿足這一要求。
在服務器端,我的期望是Delphi可以實現單一來源、多平台支持。
語言特性方面,我期望Delphi:
* XML和正則表達式成為語言的一部分。XML不消多說,正則表達式在字串匹配和許多應用使用的解析設備方面非常有用。為什麼不讓它們成為Delphi語法的一部分呢?實際上,查看XML的E4X EcmaScript,可以將XML直接整合到語言中,所以看起來Delphi應該可以很自然地使用XML。
除此之外,Embarcadero的開發者還應當考慮如何解決下面的任務來更好地做好Delphi的開發:
* 應用的打包和分配;
*盡管存在各種第三方安裝工具,但如今分配到Win32環境還是很復雜。主要的原因是因為需要其他開發工具和語言來創建相關的安裝腳本,而且這些腳本的更新周期很快,需要持續不斷地更新。
*文檔在源代碼內提供了各種注釋,因而某種程度上它已經成為了開發過程的一部分。我個人很討厭這種方法,因為它將源散落得到處都是,而現在的文檔則是分離式的也很不方便。因此IDE需要提供一種解決方式,既讓文檔同步,同時又能夠將文檔和源分開從而可以簡單地將文檔翻譯到其他語言中。