冒號(hào)和他的學(xué)生們(連載20)——前臺(tái)語(yǔ)言

          冒號(hào)和他的學(xué)生們

          ——程序員提高班紀(jì)事

          20.前臺(tái)語(yǔ)言

          運(yùn)用之妙,存乎一心                                                        ——《宋史·岳飛傳》


          稍事休息后,冒號(hào)切換了話題:“接下來(lái)簡(jiǎn)單聊聊Visual BasicDelphi。”

          嘆號(hào)略帶得色:“Visual Basic最好用了,建個(gè)窗體,從工具箱中拖些控件,再定義一下它們的屬性和行為,搞定!”

          冒號(hào)點(diǎn)點(diǎn)頭:“VB最大的優(yōu)點(diǎn)就是易學(xué)易用、上手快開發(fā)快,對(duì)非計(jì)算機(jī)專業(yè)人士尤其具有吸引力。”

          引號(hào)咬文嚼字:“言外之意,VB對(duì)于專業(yè)人士就不那么合適了?”

          “恐怕也不好這么說(shuō)。”冒號(hào)打了個(gè)哈哈,“當(dāng)然簡(jiǎn)單易用不是沒有代價(jià)的,隨便拖放一個(gè)控件,就生成了一大堆代碼,程序員的發(fā)揮余地自然受限,代碼效率也難以保證。不過(guò)VB多用于前臺(tái)的可視化開發(fā),對(duì)運(yùn)行效率要求相對(duì)較低,因此還是很有市場(chǎng)的。另外,VB進(jìn)化到VB.NET后,從單純的事件驅(qū)動(dòng)式Event-driven)的編程范式發(fā)展為對(duì)象式泛型式函數(shù)式等多種范式,越來(lái)越強(qiáng)大、越來(lái)越嚴(yán)格也越來(lái)越復(fù)雜,不再是‘玩具語(yǔ)言’了。”

          逗號(hào)囁嚅著:“其實(shí)用Delphi開發(fā)圖形界面也很快。”

          冒號(hào)接過(guò)話:“正因?yàn)樗鼈兩瞄L(zhǎng)可視化快速應(yīng)用開發(fā)(RAD),才常常作為前臺(tái)語(yǔ)言來(lái)使用。事實(shí)上,它們不單單是語(yǔ)言,也是開發(fā)環(huán)境。Delphi又稱Object Pascal,前身是教學(xué)語(yǔ)言PascalVB的前身是入門語(yǔ)言BASICBeginner's All-purpose Symbolic Instruction Code),故而均具有易學(xué)易用的特點(diǎn)。”

          問號(hào)要求:“能否比較一下二者的優(yōu)缺點(diǎn)?”

          冒號(hào)回應(yīng):“引用Computerworld的評(píng)論:‘Delphi讓復(fù)雜的事情變得簡(jiǎn)單,VB讓簡(jiǎn)單的事情變得更簡(jiǎn)單’。Delphi優(yōu)秀的VCL框架使得它作為前臺(tái)語(yǔ)言略勝一籌;更高的運(yùn)行效率使得它同樣能勝任后臺(tái)工作;VB僅限于Windows,而Delphi可移植到Linux下的Kylix;對(duì)指針的支持則是便利與復(fù)雜的雙刃劍。反過(guò)來(lái),VB的學(xué)習(xí)曲線更短;如果專注微軟技術(shù),VB更便于擴(kuò)展開發(fā)包括MS Office在內(nèi)的應(yīng)用程序,VB.NET更能充分利用.NET平臺(tái)上的資源;不過(guò)VB版本更新較快,在緊跟時(shí)代的同時(shí),也給程序員帶來(lái)惱人的兼容性問題。”

          句號(hào)再次體會(huì)到:“正如在JavaC#中作選擇一樣,平臺(tái)是語(yǔ)言選擇的一個(gè)重要因素。”

          “說(shuō)得沒錯(cuò)。”冒號(hào)表示認(rèn)可,“由于BASIC是微軟的起家語(yǔ)言,VB的門檻又低,同時(shí)VB.NET也是.NET的一部分,它的前景還是樂觀的,有些不利的是微軟明顯把重心放在C#上。談到Delphi,不得不提Borland公司。這位曾經(jīng)的軟件巨人開發(fā)了無(wú)數(shù)經(jīng)典的產(chǎn)品,卻因經(jīng)營(yíng)不善而日漸沒落,不久前將子公司CodeGear連同包括Delphi在內(nèi)的產(chǎn)品賤賣給了他人。”

          也許,從當(dāng)初Delphi的首席架構(gòu)師Hejlsberg被微軟挖走的那一天起,這樣的結(jié)局就已注定了。”冒號(hào)不由得輕嘆一聲,惋惜之情溢于言表,“這再次說(shuō)明技術(shù)的成功并不意味著商業(yè)的成功,同時(shí)語(yǔ)言的發(fā)展與背后支持的公司也是休戚相關(guān)的。Borland和微軟是兩面最好的鏡子。

          嘆號(hào)聽出弦外之音:“看來(lái)Delphi前景不妙啊。”

          冒號(hào)不置可否:“這也很難說(shuō),畢竟Delphi的鐵桿擁護(hù)者也不少。不過(guò)隨著基于internet的應(yīng)用日趨廣泛,桌面應(yīng)用受到網(wǎng)絡(luò)應(yīng)用的猛烈沖擊,VBDelphi的市場(chǎng)份額必然都會(huì)有所下降。在以網(wǎng)絡(luò)為中心的企業(yè)解決方案中,作為平臺(tái)語(yǔ)言的JavaC#是兩棵比肩而立的大樹,在它們周圍生長(zhǎng)著郁郁蔥蔥的動(dòng)態(tài)語(yǔ)言的小草。”

          話題自然而然地移到了動(dòng)態(tài)語(yǔ)言。

          引號(hào)看了看筆記:“按計(jì)劃下面該談動(dòng)態(tài)語(yǔ)言PerlPHPPythonRuby JavaScript了。”

          冒號(hào)說(shuō)道:“在這些語(yǔ)言中,JavaScript是個(gè)異類,雖然也有服務(wù)器端的JavaScriptSSJS),但用得最多的還是在客戶端。從這種意義上說(shuō),它也是一種前臺(tái)語(yǔ)言。”

          逗號(hào)稍有疑惑:“您是說(shuō)將它與方才的VBDelphi并列?”

          “有一點(diǎn)不同的是,JavaScript必須與CSSHTMLXMLXSLT等語(yǔ)言配合才能完成前臺(tái)工作。”冒號(hào)作了補(bǔ)充。

          問號(hào)似乎明白了:“您指的就是流行的AJAX技術(shù)吧。”

          “不完全是。”冒號(hào)輕輕搖了搖頭,“DHTMLDynamic HTML)照樣可以勝任前臺(tái)事務(wù),事實(shí)上以前B/S架構(gòu)的應(yīng)用大都如此。AJAXAsynchronous JavaScript And XML)技術(shù)無(wú)非多了個(gè)XHR (XMLHttpRequest)的API,在此之前局部刷新的效果只能通過(guò)IFrame來(lái)實(shí)現(xiàn)。正是這種異步技術(shù),大大提升了用戶體驗(yàn),使得網(wǎng)頁(yè)效果開始前所未有地逼近桌面效果。”

          引號(hào)不無(wú)擔(dān)憂:“目前富客戶端技術(shù)層出不窮,JavaScript的前景如何呢?”

          冒號(hào)給了一顆定心丸:“JavaScript在網(wǎng)頁(yè)技術(shù)中的主流地位在很長(zhǎng)時(shí)間內(nèi)恐怕都難以撼動(dòng)。相比其他的RIARich Internet application)技術(shù),如AdobeFlex、微軟的SilverlightSunJavaFX等,以JavaScript為核心的AJAX技術(shù)最大的優(yōu)勢(shì)在于:標(biāo)準(zhǔn)、普及、成熟;不需安裝插件,只要瀏覽器支持JavaScript即可;因其文本特征而對(duì)搜索引擎更加友好。”

          嘆號(hào)談及他的感受:“JavaScript給人的感覺是:看起來(lái)很簡(jiǎn)單,寫起來(lái)很隨意,用起來(lái)很頭痛。”

          “原因是多方面的。”冒號(hào)諄諄而言,“從JavaScript語(yǔ)言本身來(lái)說(shuō),其弱類型和動(dòng)態(tài)語(yǔ)言的特征給了程序員更多的自由;基于原型(Prototype-based)的OOP特征遠(yuǎn)不如基于類(Class-based)的OOP那樣為人熟知;缺乏豐富的API;不同的瀏覽器不同的版本之間兼容性差。更主要的是,JavaScript一直被嚴(yán)重低估和誤解,自視甚高的程序員往往不屑去編寫網(wǎng)頁(yè),大多數(shù)JavaScript代碼由不那么專業(yè)的程序員編寫。此外IDE與調(diào)試工具的缺乏也給開發(fā)帶來(lái)掣肘。這些都加深了人們對(duì)JavaScript的隨意混亂乃至丑陋難用的印象。但請(qǐng)記住:待友之道,貴在放大其優(yōu)點(diǎn)而縮小其缺點(diǎn),對(duì)待語(yǔ)言亦當(dāng)如此。其實(shí)JavaScript的強(qiáng)大和優(yōu)雅是超乎想象的,它如一只神奇的魔袋,乍看平淡無(wú)奇,卻總能變出意想不到的寶貝。”

          問號(hào)追問:“JavaScript的缺點(diǎn)是什么?”

          “最大的缺點(diǎn)是起了個(gè)極無(wú)個(gè)性的名字。”冒號(hào)半開玩笑地說(shuō),“為了沾Java的光,Netscape愣將LiveScript改成JavaScript,帶來(lái)不少混亂。”

          引號(hào)也注意到:“書店、圖書館常常將JavaScript的書與Java的放在一起。”

          冒號(hào)話鋒一轉(zhuǎn):“談?wù)?/span>JavaScript的缺點(diǎn)并沒有什么實(shí)際意義,因?yàn)樗鼪]有同類的替代品。VBScript僅限于微軟的IE,在追求跨瀏覽器和強(qiáng)調(diào)標(biāo)準(zhǔn)的今天是不具備競(jìng)爭(zhēng)力的。ActionScript具有強(qiáng)大的多媒體功能,但必須借助Flash插件,與JavaScript應(yīng)該是互補(bǔ)共生的關(guān)系。”

          句號(hào)發(fā)現(xiàn)一個(gè)有趣的現(xiàn)象:“初級(jí)程序員往往偏愛前臺(tái)編程,中級(jí)以上的偏愛后臺(tái)編程,有些人則認(rèn)為只有底層編程的才是真正的高手。”

          冒號(hào)解釋道:“前臺(tái)編程涉及面專,絢麗花哨的界面更容易讓初涉編程者產(chǎn)生成就感;后臺(tái)編程涉及面廣,需要深厚的技術(shù)積累和縝密的設(shè)計(jì)思維;底層編程涉及面深,給人神秘莫測(cè)之感。然大道相通,難者亦易,易者亦難。設(shè)計(jì)一個(gè)用戶友好的界面與設(shè)計(jì)操作系統(tǒng)的一個(gè)模塊,一個(gè)是與人直接打交道,一個(gè)是與機(jī)器直接打交道,孰難孰易、孰輕孰重,焉能一概而論?”

          posted on 2008-06-16 23:52 鄭暉 閱讀(2306) 評(píng)論(6)  編輯  收藏 所屬分類: 冒號(hào)和他的學(xué)生們

          評(píng)論

          # re: 冒號(hào)和他的學(xué)生們(連載20)——前臺(tái)語(yǔ)言 2008-06-17 07:05 朱遠(yuǎn)翔-Apusic技術(shù)顧問

          寫得挺有意思的,不過(guò)對(duì)VB和Delphi的分析過(guò)于簡(jiǎn)單。如果沒人指點(diǎn),自己學(xué)習(xí)的話VB更容易上手,但是如果想做個(gè)程序員的話,Delphi才提供了深入進(jìn)去的機(jī)會(huì)。
          曾經(jīng),我學(xué)了兩年的VB還是只會(huì)拖控件,那些高手所說(shuō)的VB可以做所有事情,根本無(wú)法理解,可能我比較笨。但是我用了一年Delphi之后就明白原來(lái)Windows編程里面還有那么多東西。
          主要是VB打著面向?qū)ο蟮钠焯?hào),把所有的東西都封裝了,結(jié)果拖了兩年的控件,仍然不明白面向?qū)ο缶幊痰母拍睢5荄elphi完全開放了VCL源代碼,程序員可以知其然還可以知其所以然。
          學(xué)VB對(duì)VBScript幫助不大,在理念上變化比較多,倒是覺得學(xué)JavaScript對(duì)VBScript幫助較大。而Delphi的跨平臺(tái)概念價(jià)值也不大,我見到的大部分還是在Windows平臺(tái)下開發(fā)。
          VB.NET就不了解了,因?yàn)闆]再關(guān)注了。  回復(fù)  更多評(píng)論   

          # re: 冒號(hào)和他的學(xué)生們(連載20)——前臺(tái)語(yǔ)言 2008-06-17 08:21 ron

          想起了編程之道里的一個(gè)故事,^-^  回復(fù)  更多評(píng)論   

          # re: 冒號(hào)和他的學(xué)生們(連載20)——前臺(tái)語(yǔ)言 2008-06-17 09:34 raof01

          “前臺(tái)編程涉及面專,絢麗花哨的界面更容易讓初涉編程者產(chǎn)生成就感;后臺(tái)編程涉及面廣,需要深厚的技術(shù)積累和縝密的設(shè)計(jì)思維;底層編程涉及面深,給人神秘莫測(cè)之感。然大道相通,難者亦易,易者亦難。設(shè)計(jì)一個(gè)用戶友好的界面與設(shè)計(jì)操作系統(tǒng)的一個(gè)模塊,一個(gè)是與人直接打交道,一個(gè)是與機(jī)器直接打交道,孰難孰易、孰輕孰重,焉能一概而論?”

          說(shuō)得好!!初學(xué)者急于看到成就,偏重前臺(tái);中級(jí)以上偏向思考,偏愛后臺(tái)。然二者要想做到極致,難度是一樣的,側(cè)重點(diǎn)是一樣的。
            回復(fù)  更多評(píng)論   

          # re: 冒號(hào)和他的學(xué)生們(連載20)——前臺(tái)語(yǔ)言 2008-06-17 11:53 YODA

          寫得很不錯(cuò)啊,一直在關(guān)注博主的這個(gè)系列呢。
          但是實(shí)際上VB并不像大多數(shù)人理解的這樣傻,MSDN有一本書叫做《Hard Code VB》,就對(duì)VB進(jìn)行了很深入的剖析。只是因?yàn)閂B太容易使用了,使人忽略了他底層的東西。Delphi是一個(gè)很不錯(cuò)的東西,但是Windows是MS的,再加上Borland自身的一些問題,導(dǎo)致了Delphi的沒落。Kylix沒有玩過(guò),不清楚。
          博主繼續(xù)啊,期待中。  回復(fù)  更多評(píng)論   

          # re: 冒號(hào)和他的學(xué)生們(連載20)——前臺(tái)語(yǔ)言 2008-06-17 22:02 fejay

          寫的很有意思啊!支持一下  回復(fù)  更多評(píng)論   

          # re: 冒號(hào)和他的學(xué)生們(連載20)——前臺(tái)語(yǔ)言 2008-06-19 19:40 kooyee

          有意思,好多問題都是深入淺出的被解釋, 很形象啊  回復(fù)  更多評(píng)論   

          導(dǎo)航

          統(tǒng)計(jì)

          公告

          博客搬家:http://blog.zhenghui.org
          《冒號(hào)課堂》一書于2009年10月上市,詳情請(qǐng)見
          冒號(hào)課堂

          留言簿(17)

          隨筆分類(61)

          隨筆檔案(61)

          文章分類(1)

          文章檔案(1)

          最新隨筆

          積分與排名

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 昌平区| 长沙市| 紫金县| 山东省| 庆元县| 东明县| 大足县| 平定县| 桓台县| 浪卡子县| 金山区| 江门市| 白银市| 九江县| 什邡市| 额济纳旗| 萍乡市| 拜城县| 汾西县| 手游| 湖南省| 娄底市| 定日县| 鄢陵县| 武强县| 吴忠市| 海城市| 花莲县| 保靖县| 承德县| 通化县| 龙泉市| 农安县| 鹤庆县| 金门县| 永川市| 开封县| 平南县| 铜川市| 喀什市| 大洼县|