冒號(hào)課堂§6.3:前臺(tái)語言

           

          冒號(hào)課堂

          6.3前臺(tái)語言——視覺與交互的藝術(shù)

          世人反不難而易之,用是通者亦罕                       ——《歐陽修·詩解統(tǒng)序》

           

          關(guān)鍵詞:前臺(tái)語言,VB,Delphi,JavaScript,AJAX

          摘要:簡(jiǎn)談VBDelphiJavaScript

           

             預(yù)覽

          ·          Delphi讓復(fù)雜的事情變得簡(jiǎn)單,VB讓簡(jiǎn)單的事情變得更簡(jiǎn)單

          ·          它(JavaScript)宛如一只神奇的魔袋,乍看平淡無奇,卻總能變出意想不到的寶貝

          ·          待友之道,貴在放大其優(yōu)點(diǎn)而縮小其缺點(diǎn),對(duì)待語言亦當(dāng)如是

          ·          大道相通,難者亦易,易者亦難


             ?提問  


          • Visual BasicDelphi有何共同點(diǎn)和不同點(diǎn)?
          • 相比其他的富客戶端技術(shù),JavaScript的前景如何?
          • JavaScript是一門嚴(yán)肅的語言嗎?
          • 前臺(tái)編程、后臺(tái)編程與系統(tǒng)編程,哪個(gè)最難?

           

              講解

           

          稍事休息后,冒號(hào)切換了話題:“接下來簡(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è)人士就不那么合適了?”

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

          逗號(hào)插話:“用Delphi來開發(fā)圖形界面不也很快嗎?”

          冒號(hào)接過話來:“正因?yàn)樗鼈兩瞄L(zhǎng)可視化快速應(yīng)用開發(fā)(RAD),才常常作為前臺(tái)語言來使用。事實(shí)上,它們不單單是語言,也是開發(fā)環(huán)境。沒有IDE,人們照樣能寫CC++、Java、Perl等代碼,但恐怕沒有誰會(huì)拋開IDE去開發(fā)VBDelphi程序。Delphi又稱Object Pascal,前身是教學(xué)語言Pascal,VB的前身是入門語言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ùn)行效率使得它同樣能勝任后臺(tái)工作;VB僅限于Windows,而Delphi可移植到Linux下的Kylix;對(duì)指針的支持則是便利與復(fù)雜的雙刃劍。反過來,VB的學(xué)習(xí)曲線更短;如果專注微軟技術(shù),VB更便于擴(kuò)展開發(fā)包括MS Office在內(nèi)的應(yīng)用程序,VB.NET更能充分利用.NET平臺(tái)上的資源;不過VB版本更新較快,在緊跟時(shí)代的同時(shí),也給程序員帶來惱人的兼容性問題。”

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

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

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

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

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

          話題自然而然地轉(zhuǎn)到了動(dòng)態(tài)語言。

          引號(hào)看了看筆記:“按計(jì)劃,是不是該談動(dòng)態(tài)語言Perl、PHP、Python、Ruby JavaScript了?”

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

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

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

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

          “不完全是。”冒號(hào)輕輕搖了搖頭,“動(dòng)態(tài)HTML技術(shù)(Dynamic HTML,簡(jiǎn)稱DHTML)照樣可以勝任前臺(tái)事務(wù),事實(shí)上以前B/S應(yīng)用[2]都是靠它來完成瀏覽器端工作的。DHTML在靜態(tài)標(biāo)記語言如HTML、XHTML等的基礎(chǔ)上,添加客戶端腳本語言如JavaScriptVBScript等,并輔以樣式語言如CSS。不少人以為動(dòng)態(tài)HTML與動(dòng)態(tài)網(wǎng)頁是同義詞,但實(shí)際上前者的動(dòng)態(tài)效果來自客戶端,后者的動(dòng)態(tài)效果還會(huì)來自服務(wù)端。至于AJAXAsynchronous JavaScript And XML),比DHTML無非多了個(gè)XHR (XMLHttpRequest) APIXHR最大的功用是能與后臺(tái)服務(wù)器進(jìn)行異步通訊,從而實(shí)現(xiàn)頁面的局部刷新[3],而在此之前類似的效果只能通過IFrame來實(shí)現(xiàn)。正是這種異步技術(shù),大大提升了用戶體驗(yàn),使得網(wǎng)頁效果開始前所未有地逼近桌面效果。雖然它并非一項(xiàng)新技術(shù)——早在2000年的IE5便實(shí)現(xiàn)了,但真正流行開來還只是近幾年的事。”

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

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

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

          “原因是多方面的。”冒號(hào)諄諄而言,“JavaScript語言本身來說,其弱類型和動(dòng)態(tài)語言的特征給了程序員更多的自由,也帶來更多的混亂;基于原型prototype-basedOOP特征遠(yuǎn)不如基于類(class-based)的OOP那樣為人熟知;缺乏豐富的API;不同的瀏覽器不同的版本之間兼容性差。更主要的是,JavaScript一直被嚴(yán)重低估和誤解,自視甚高的程序員往往不屑去編寫網(wǎng)頁,大多數(shù)JavaScript代碼由不那么專業(yè)的程序員編寫。此外IDE與調(diào)試工具的缺乏也給開發(fā)帶來掣肘。這些都加深了人們對(duì)JavaScript的簡(jiǎn)單隨意乃至丑陋難用的印象。其實(shí)JavaScript作為一門動(dòng)態(tài)語言,集過程式、對(duì)象式、函數(shù)式、事件驅(qū)動(dòng)式和元編程于一身,其強(qiáng)大和優(yōu)雅絕對(duì)是超乎想象的。它宛如一只神奇的魔袋,乍看平淡無奇,卻總能變出意想不到的寶貝。各位若有機(jī)會(huì)深入地學(xué)習(xí)和運(yùn)用JavaScript,定知我所言非虛。”

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

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

          引號(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)系。另請(qǐng)記?。?strong>待友之道,貴在放大其優(yōu)點(diǎn)而縮小其缺點(diǎn),對(duì)待語言亦當(dāng)如是。這既是一種態(tài)度,也是一種境界。”

          句號(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è)模塊,一邊是與人直接打交道,一邊是與機(jī)器直接打交道,孰難孰易、孰輕孰重,焉能一概而論?”

          見冒號(hào)說得鏗鏘有力,問號(hào)雖不忍置喙,終難掩疑竇:“用C寫操作系統(tǒng)的內(nèi)核難道不比用VB做一個(gè)圖形界面難得多嗎?”

          “不可否認(rèn),系統(tǒng)編程的門檻確實(shí)要高得多,需要程序員具備更多的硬件和操作系統(tǒng)知識(shí)和更強(qiáng)的編程能力。”冒號(hào)以退為進(jìn),“它最大的挑戰(zhàn)在于:在相對(duì)貧乏的軟件資源和相對(duì)簡(jiǎn)陋的開發(fā)環(huán)境下,能高效、安全地管理包括CPU、內(nèi)存等在內(nèi)的系統(tǒng)資源。再說前臺(tái)編程,雖然入門容易,要想登堂入室卻是大為不易。它最大的挑戰(zhàn)不在代碼編寫,而在界面設(shè)計(jì)。軟件最終是為人服務(wù)的,如果沒有良好的用戶體驗(yàn),無論背后的設(shè)計(jì)如何高明、算法如何精妙,用戶也是不會(huì)買賬的。”

          嘆號(hào)充分表示理解:“一個(gè)女孩無論多么蕙質(zhì)蘭心、冰雪聰明,如果相貌丑陋、脾氣古怪,我也是不會(huì)買賬的。”

          逗號(hào)故意把臉一沉:“豈有此理,竟然自比為人家的用戶!”

          眾人嘎嘎而笑。

          問號(hào)仍有不解:“界面設(shè)計(jì)不是美工的職責(zé)嗎?”

          “美工設(shè)計(jì)的一般是靜態(tài)的視覺界面,更重要的是動(dòng)態(tài)的交互界面。相貌再好,脾氣不好也不行啊!”冒號(hào)順手拾起了嘆號(hào)的比方,“雖然近來出現(xiàn)了交互設(shè)計(jì)師的職位,專門負(fù)責(zé)UI / UEUser Interface / User Experience),但畢竟不是每個(gè)公司都有的。即便有,程序員如果缺乏充分的認(rèn)識(shí),也難以達(dá)到設(shè)計(jì)要求。這可是融美學(xué)、心理學(xué)、統(tǒng)計(jì)學(xué)、計(jì)算機(jī)科學(xué)等等于一體的高難度的技術(shù)活兒??!”

          問號(hào)心底泛起的串串疑問的泡泡漸漸開始消散。


              ,插語

          [1] 20085月,BorlandCodeGear以兩千多萬美元賣給Embarcadero Technologies。

          [2] B/SBrowser/Server(即瀏覽器/服務(wù)器)架構(gòu),區(qū)別于傳統(tǒng)的C/SClient/Server客戶機(jī)/服務(wù)器)架構(gòu)。

          [3] 嚴(yán)格說來,局部頁面刷新本身并不需要XHR,但刷新的數(shù)據(jù)來自XHR。

           

             。總結(jié)
          • Visual BasicDelphi均擅長(zhǎng)可視化快速應(yīng)用開發(fā),易學(xué)易上手,常用于前臺(tái)的桌面應(yīng)用。
          • Delphi相對(duì)VB的優(yōu)勢(shì)在于:可視化框架更優(yōu)秀;運(yùn)行效率更高;不限于Windows;支持指針。
          • VB相對(duì)Delphi的優(yōu)勢(shì)在于:學(xué)習(xí)曲線更短;便于擴(kuò)展開發(fā)包括MS Office在內(nèi)的應(yīng)用程序;與.NET平臺(tái)更融合(主要指VB.NET);有大公司(微軟)的支持。
          • JavaScript為核心的DHTMLAJAX技術(shù),相比其他的富客戶端技術(shù)有其明顯的優(yōu)勢(shì):標(biāo)準(zhǔn)、普及、成熟、毋需插件、對(duì)搜索引擎友好。
          • 作為弱類型的動(dòng)態(tài)語言,JavaScript有它的一些問題:基于原型的對(duì)象式令人陌生;API相對(duì)貧乏;瀏覽器標(biāo)準(zhǔn)不夠統(tǒng)一;IDE和調(diào)試工具不夠理想;多由不夠?qū)I(yè)的程序員編寫等等。但它本身是一門功能齊全、強(qiáng)大而優(yōu)美的語言,只要嚴(yán)肅地對(duì)待它,它就是一門嚴(yán)肅的語言。
          • 前臺(tái)編程涉及面專,更關(guān)注界面設(shè)計(jì);后臺(tái)編程涉及面廣,更關(guān)注業(yè)務(wù)邏輯;底層編程涉及面深,更關(guān)注系統(tǒng)資源。它們只是側(cè)重點(diǎn)有所不同,并無真正的難易之別、高下之分。

           

           “”參考

          [1] Ernesto De SpiritoA comparison between Delphi and Visual Basichttp://www.latiumsoftware.com/en/articles/00010.php

          [2] David FlanaganJavaScript: The Definitive Guide, 4th ed.Sebastopol, CAO'Reilly2001

          posted on 2009-02-22 21:57 鄭暉 閱讀(3583) 評(píng)論(4)  編輯  收藏 所屬分類: 冒號(hào)課堂

          評(píng)論

          # re: 冒號(hào)課堂§6.3:前臺(tái)語言 2009-02-23 14:53 張氏兄弟

          仁兄,在你這里加入對(duì)于AIR的評(píng)論就更詳細(xì)了
          你可以參照一下 FLEX第一步的前言或者前幾章的介紹
          主要是比較 ext(js方案),flex,微軟的阿銀!

          建議而已了!  回復(fù)  更多評(píng)論   

          # re: 冒號(hào)課堂§6.3:前臺(tái)語言 2009-02-23 15:08 鄭暉

          @張氏兄弟
          多謝你的建議。不過,本系列是圍繞第一課提到的最流行的十二種語言來分類討論的,因此未能涵蓋所有流行的前臺(tái)語言。  回復(fù)  更多評(píng)論   

          # re: 冒號(hào)課堂§6.3:前臺(tái)語言 2009-02-24 08:52 趙國林

          哥們不錯(cuò) 挺好的   回復(fù)  更多評(píng)論   

          # re: 冒號(hào)課堂§6.3:前臺(tái)語言 2009-02-26 12:37 Tairan

          講的很中肯~  回復(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)論排行榜

          主站蜘蛛池模板: 资中县| 林口县| 紫云| 含山县| 石阡县| 临沧市| 衡阳市| 北安市| 大埔县| 云梦县| 交口县| 望谟县| 垣曲县| 临泉县| 皋兰县| 运城市| 玉环县| 庆云县| 梁平县| 富平县| 错那县| 密云县| 奉化市| 绍兴市| 鹤岗市| 进贤县| 土默特左旗| 鄂托克前旗| 宁都县| 石城县| 溧阳市| 游戏| 罗定市| 兴国县| 商都县| 南开区| 邹城市| 鹿泉市| 沂源县| 瓮安县| 沿河|