20.前台語言
運用之妙,存乎一心 ——《宋史·岳飛傳》
稍事休息後,冒號切換了話題:“接下來簡單聊聊Visual Basic和Delphi。”
歎號略帶得色:“Visual Basic最好用了,建個窗體,從工具箱中拖些控件,再定義一下它們的屬性和行為,搞定!”
冒號點點頭:“VB最大的優點就是易學易用、上手快開發快,對非計算機專業人士尤其具有吸引力。”
引號咬文嚼字:“言外之意,VB對於專業人士就不那麼合適了?”
“恐怕也不好這麼說。”冒號打了個哈哈,“當然簡單易用不是沒有代價的,隨便拖放一個控件,就生成了一大堆代碼,程序員的發揮余地自然受限,代碼效率也難以保證。不過VB多用於前台的可視化開發,對運行效率要求相對較低,因此還是很有市場的。另外,VB進化到VB.NET後,從單純的事件驅動式(Event-driven)的編程范式發展為對象式、泛型式和函數式等多種范式,越來越強大、越來越嚴格也越來越復雜,不再是‘玩具語言’了。”
逗號嗫嚅著:“其實用Delphi開發圖形界面也很快。”
冒號接過話:“正因為它們擅長可視化快速應用開發(RAD),才常常作為前台語言來使用。事實上,它們不單單是語言,也是開發環境。Delphi又稱Object Pascal,前身是教學語言Pascal,VB的前身是入門語言BASIC(Beginner's All-purpose Symbolic Instruction Code),故而均具有易學易用的特點。”
問號要求:“能否比較一下二者的優缺點?”
冒號回應:“引用Computerworld的評論:‘Delphi讓復雜的事情變得簡單,VB讓簡單的事情變得更簡單’。Delphi優秀的VCL框架使得它作為前台語言略勝一籌;更高的運行效率使得它同樣能勝任後台工作;VB僅限於Windows,而Delphi可移植到Linux下的Kylix;對指針的支持則是便利與復雜的雙刃劍。反過來,VB的學習曲線更短;如果專注微軟技術,VB更便於擴展開發包括MS Office在內的應用程序,VB.NET更能充分利用.NET平台上的資源;不過VB版本更新較快,在緊跟時代的同時,也給程序員帶來惱人的兼容性問題。”
句號再次體會到:“正如在Java和C#中作選擇一樣,平台是語言選擇的一個重要因素。”
“說得沒錯。”冒號表示認可,“由於BASIC是微軟的起家語言,VB的門檻又低,同時VB.NET也是.NET的一部分,它的前景還是樂觀的,有些不利的是微軟明顯把重心放在C#上。談到Delphi,不得不提Borland公司。這位曾經的軟件巨人開發了無數經典的產品,卻因經營不善而日漸沒落,不久前將子公司CodeGear連同包括Delphi在內的產品賤賣給了他人。”
“也許,從當初Delphi的首席架構師Hejlsberg被微軟挖走的那一天起,這樣的結局就已注定了。”冒號不由得輕歎一聲,惋惜之情溢於言表,“這再次說明技術的成功並不意味著商業的成功,同時語言的發展與背後支持的公司也是休戚相關的。Borland和微軟是兩面最好的鏡子。”
歎號聽出弦外之音:“看來Delphi前景不妙啊。”
冒號不置可否:“這也很難說,畢竟Delphi的鐵桿擁護者也不少。不過隨著基於internet的應用日趨廣泛,桌面應用受到網絡應用的猛烈沖擊,VB和Delphi的市場份額必然都會有所下降。在以網絡為中心的企業解決方案中,作為平台語言的Java和C#是兩棵比肩而立的大樹,在它們周圍生長著郁郁蔥蔥的動態語言的小草。”
話題自然而然地移到了動態語言。
引號看了看筆記:“按計劃下面該談動態語言Perl、PHP、Python、Ruby 和JavaScript了。”
冒號說道:“在這些語言中,JavaScript是個異類,雖然也有服務器端的JavaScript(SSJS),但用得最多的還是在客戶端。從這種意義上說,它也是一種前台語言。”
逗號稍有疑惑:“您是說將它與方才的VB和Delphi並列?”
“有一點不同的是,JavaScript必須與CSS、HTML、XML和XSLT等語言配合才能完成前台工作。”冒號作了補充。
問號似乎明白了:“您指的就是流行的AJAX技術吧。”
“不完全是。”冒號輕輕搖了搖頭,“DHTML(Dynamic HTML)照樣可以勝任前台事務,事實上以前B/S架構的應用大都如此。AJAX(Asynchronous JavaScript And XML)技術無非多了個XHR (XMLHttpRequest)的API,在此之前局部刷新的效果只能通過IFrame來實現。正是這種異步技術,大大提升了用戶體驗,使得網頁效果開始前所未有地逼近桌面效果。”
引號不無擔憂:“目前富客戶端技術層出不窮,JavaScript的前景如何呢?”
冒號給了一顆定心丸:“JavaScript在網頁技術中的主流地位在很長時間內恐怕都難以撼動。相比其他的RIA(Rich Internet application)技術,如Adobe的Flex、微軟的Silverlight、Sun的JavaFX等,以JavaScript為核心的AJAX技術最大的優勢在於:標准、普及、成熟;不需安裝插件,只要浏覽器支持JavaScript即可;因其文本特征而對搜索引擎更加友好。”
歎號談及他的感受:“JavaScript給人的感覺是:看起來很簡單,寫起來很隨意,用起來很頭痛。”
“原因是多方面的。”冒號諄諄而言,“從JavaScript語言本身來說,其弱類型和動態語言的特征給了程序員更多的自由;基於原型(Prototype-based)的OOP特征遠不如基於類(Class-based)的OOP那樣為人熟知;缺乏豐富的API;不同的浏覽器不同的版本之間兼容性差。更主要的是,JavaScript一直被嚴重低估和誤解,自視甚高的程序員往往不屑去編寫網頁,大多數JavaScript代碼由不那麼專業的程序員編寫。此外IDE與調試工具的缺乏也給開發帶來掣肘。這些都加深了人們對JavaScript的隨意混亂乃至丑陋難用的印象。但請記住:待友之道,貴在放大其優點而縮小其缺點,對待語言亦當如此。其實JavaScript的強大和優雅是超乎想象的,它如一只神奇的魔袋,乍看平淡無奇,卻總能變出意想不到的寶貝。”
問號追問:“JavaScript的缺點是什麼?”
“最大的缺點是起了個極無個性的名字。”冒號半開玩笑地說,“為了沾Java的光,Netscape愣將LiveScript改成JavaScript,帶來不少混亂。”
引號也注意到:“書店、圖書館常常將JavaScript的書與Java的放在一起。”
冒號話鋒一轉:“談論JavaScript的缺點並沒有什麼實際意義,因為它沒有同類的替代品。VBScript僅限於微軟的IE,在追求跨浏覽器和強調標准的今天是不具備競爭力的。ActionScript具有強大的多媒體功能,但必須借助Flash插件,與JavaScript應該是互補共生的關系。”
句號發現一個有趣的現象:“初級程序員往往偏愛前台編程,中級以上的偏愛後台編程,有些人則認為只有底層編程的才是真正的高手。”
冒號解釋道:“前台編程涉及面專,絢麗花哨的界面更容易讓初涉編程者產生成就感;後台編程涉及面廣,需要深厚的技術積累和缜密的設計思維;底層編程涉及面深,給人神秘莫測之感。然大道相通,難者亦易,易者亦難。設計一個用戶友好的界面與設計操作系統的一個模塊,一個是與人直接打交道,一個是與機器直接打交道,孰難孰易、孰輕孰重,焉能一概而論?”