冒号课堂§6.3:前台语言

冒号课堂

第六课 语言简评(3)

 

6.3前台语言——视觉与交互的艺术

世人反不难而易之,用是通者亦罕                       ——《欧阳修·诗解统序》

 

关键词:前台语言,VB,Delphi,JavaScript,AJAX

摘要:简谈VBDelphiJavaScript

 

预览

·           Delphi让复杂的事情变得简单,VB让简单的事情变得更简单

·           它(JavaScript)宛如一只神奇的魔袋,乍看平淡无奇,却总能变出意想不到的宝贝

·           待友之道,贵在放大其优点而缩小其缺点,对待语言亦当如是

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

·           得道者化腐朽为神奇,离道者化神奇为腐朽

 

提问
  • Visual BasicDelphi有何共同点和不同点?
  • 相比其他的富客户端技术,JavaScript的前景如何?
  • JavaScript是一门严肃的语言吗?
  • 前台编程、后台编程与系统编程,哪个最难?

 

讲解

稍事休息后,冒号切换了话题:“接下来简单聊聊Visual BasicDelphi。”

叹号略带得色:“Visual Basic最好用了,建个窗体,从工具箱中拖些控件,再定义一下它们的属性和行为,搞定!”

冒号点点头:“VB最大的优点就是易学易用、上手快开发快,对非计算机专业人士尤其具有吸引力。”

引号咬文嚼字:“言外之意,VB对于专业人士就不那么合适了?”

“恐怕也不好这么说。”冒号打了个哈哈,“当然简单易用不是没有代价的,随便拖放一个控件,就生成了一大堆代码,程序员的发挥余地自然受限,代码效率也难以保证。不过VB多用于前台的可视化开发,对运行效率要求相对较低,因此还是很有市场的。另外,VB进化到VB.NET后,从单纯的事件驱动式的编程范式发展为对象式、泛型式和函数式等多种范式,越来越强大、越来越严格也越来越复杂,不再是人们戏称的‘玩具语言’了。”

逗号插话:“用Delphi来开发图形界面不也很快吗?”

冒号接过话来:“正因为它们擅长可视化快速应用开发(RAD),才常常作为前台语言来使用。事实上,它们不单单是语言,也是开发环境。没有IDE,人们照样能写CC++JavaPerl等代码,但恐怕没有谁会抛开IDE去开发VBDelphi程序。Delphi又称Object Pascal,前身是教学语言PascalVB的前身是入门语言BASICBeginner's All-purpose Symbolic Instruction Code),故而均具有易学易用的特点。”

问号要求:“能否比较一下二者的优缺点?”

冒号回应:“引用Computerworld的评论:‘Delphi让复杂的事情变得简单,VB让简单的事情变得更简单’。Delphi优秀的VCL框架使得它作为前台语言略胜一筹;更高的运行效率使得它同样能胜任后台工作;VB仅限于Windows,而Delphi可移植到Linux下的Kylix;对指针的支持则是便利与复杂的双刃剑。反过来,VB的学习曲线更短;如果专注微软技术,VB更便于扩展开发包括MS Office在内的应用程序,VB.NET更能充分利用.NET平台上的资源;不过VB版本更新较快,在紧跟时代的同时,也给程序员带来恼人的兼容性问题。”

句号再次体会到:“正如在JavaC#中作选择一样,平台是语言选择的一个重要因素。”

“说得没错。”冒号表示认可,“由于BASIC是微软的起家语言,VB的门槛又低,同时VB.NET也是.NET的一部分,它的前景还是乐观的,有些不利的是微软明显把重心放在C#上。谈到Delphi,不得不提Borland公司。这位曾经的软件巨人开发了无数经典的产品,却因经营不善而日渐没落,不久前将子 公司CodeGear连同包括Delphi在内的产品贱卖给了他人[1]。”

“也许,从当初Delphi的首席架构师Hejlsberg被微软挖走的那一天起,这样的结局就已注定了。”冒号不由得轻叹一声,惋惜之情溢于言表,“这再次说明技术的成功并不意味着商业的成功,同时语言的发展与背后支持的公司也是休戚相关的。Borland和微软是两面最好的镜子。”

叹号听出弦外之音:“看来Delphi前景不妙啊。”

冒号不置可否:“这也很难说,毕竟Delphi的铁杆拥护者也不少。不过随着基于internet的应用日趋广泛,桌面应用受到网络应用的猛烈冲击,VBDelphi的市场份额必然都会有所下降。在以网络为中心的企业解决方案中,作为平台语言的JavaC#是两棵比肩而立的大树,在它们周围生长着郁郁葱葱的动态语言的小草。”

话题自然而然地转到了动态语言。

引号看了看笔记:“按计划,是不是该谈动态语言PerlPHPPythonRuby JavaScript了?”

冒号说道:“在这些语言中,JavaScript是个异类,虽然也有服务器端的JavaScriptSSJS),但用得最多的还是在客户端。从这种意义上说,它也是一种前台语言。”

逗号微有疑惑:“您是说将它与方才的VBDelphi并列?”

“有一点不同的是,JavaScript必须与HTMLCSSXMLXSLT等语言配合才能完成前台工作。”冒号作了补充。

问号似乎明白了:“您指的就是流行的AJAX技术吧。”

“不完全是。”冒号轻轻摇了摇头,“动态HTML技术(Dynamic HTML,简称DHTML)照样可以胜任前台事务,事实上以前B/S应用[2]都是靠它来完成浏览器端工作的。DHTML在静态标记语言如HTMLXHTML等的基础上,添加客户端脚本语言如JavaScriptVBScript等,并辅以样式语言如CSS。不少人以为动态HTML与动态网页是同义词,但实际上前者的动态效果来自客户端,后者的动态效果还会来自服务端。至于AJAXAsynchronous JavaScript And XML),比DHTML无非多了个XHR (XMLHttpRequest) APIXHR最大的功用是能与后台服务器进行异步通讯,从而实现页面的局部刷新[3],而在此之前类似的效果只能通过IFrame来实现。正是这种异步技术,大大提升了用户体验,使得网页效果开始前所未有地逼近桌面效果。虽然它并非一项新技术——早在2000年的IE5便实现了,但真正流行开来还只是近几年的事。”

引号不无担忧:“目前富客户端技术层出不穷,JavaScript的前景如何呢?”

冒号给了一颗定心丸:“JavaScript在网页技术中的主流地位在很长时间内恐怕都难以撼动。相比其他的RIARich Internet application)技术,如AdobeFlex、微软的SilverlightSunJavaFX等,以JavaScript为核心的AJAX技术最大的优势在于:标准、普及、成熟;不需安装插件,只要浏览器支持JavaScript即可;因其文本特征而对搜索引擎更加友好。”

叹号谈及他的感受:“JavaScript给人的感觉是:看起来很简单,写起来很随意,用起来很头痛。”

“原因是多方面的。”冒号谆谆而言,“JavaScript语言本身来说,其弱类型和动态语言的特征给了程序员更多的自由,也带来更多的混乱;基于原型prototype-basedOOP特征远不如基于类(class-based)的OOP那样为人熟知;缺乏丰富的API;不同的浏览器不同的版本之间兼容性差。更主要的是,JavaScript一直被严重低估和误解,自视甚高的程序员往往不屑去编写网页,大多数JavaScript代码由不那么专业的程序员编写。此外IDE与调试工具的缺乏也给开发带来掣肘。这些都加深了人们对JavaScript的简单随意乃至丑陋难用的印象。其实JavaScript作为一门动态语言,集过程式、对象式、函数式、事件驱动式和元编程于一身,其强大和优雅绝对是超乎想象的。它宛如一只神奇的魔袋,乍看平淡无奇,却总能变出意想不到的宝贝。各位若有机会深入地学习和运用JavaScript,定知我所言非虚。”

问号追问:“JavaScript最大的缺点是什么?”

“最大的缺点是起了个极无个性的名字。”冒号半开玩笑地说,“为了沾Java的光,Netscape愣将LiveScript改成JavaScript,带来不少混乱。”

引号也注意到:“书店、图书馆常常将JavaScript的书与Java的放在一起。”

冒号话锋一转:“谈论JavaScript的缺点并没有什么实际意义,因为它没有同类的替代品。VBScript仅限于微软的IE,在追求跨浏览器和强调标准的今天是不具备竞争力的。ActionScript具有强大的多媒体功能,但必须借助Flash插件,与JavaScript应该是互补共生的关系。另请记住:待友之道,贵在放大其优点而缩小其缺点,对待语言亦当如是。这既是一种态度,也是一种境界。”

句号发现一个有趣的现象:“初级程序员往往偏爱前台编程,中级以上的偏爱后台编程,有些人则认为只有底层编程的才是真正的高手。”

冒号解释道:“前台编程涉及面专,绚丽花哨的界面更容易让初涉编程者产生成就感;后台编程涉及面广,需要深厚的技术积累和缜密的设计思维;底层编程涉及面深,给人神秘莫测之感。然大道相通,难者亦易,易者亦难。设计一个用户友好的界面与设计操作系统的一个模块,一边是与人直接打交道,一边是与机器直接打交道,孰难孰易、孰轻孰重,焉能一概而论?”

见冒号说得铿锵有力,问号虽不忍置喙,然终难掩疑窦:“用C写操作系统的内核难道不比用VB做一个图形界面难得多吗?”

“不可否认,系统编程的门槛确实要高得多,需要程序员具备更多的硬件和操作系统知识和更强的编程能力。”冒号以退为进,“它最大的挑战在于:在相对贫乏的软件资源和相对简陋的开发环境下,能高效、安全地管理包括CPU、内存等在内的系统资源。再说前台编程,虽然入门容易,要想登堂入室却是大为不易。且不说VBDelphiJavaScript各具奥妙,连看似简单的HTMLCSS中也蕴含着种种奇思妙想。得道者化腐朽为神奇,离道者化神奇为腐朽,凡事皆然。当然前台最大的挑战还不在代码编写,而在界面设计。软件最终是为人服务的,如果没有良好的用户体验,无论背后的设计如何高明、算法如何精妙,用户也是不会买账的。”

叹号充分表示理解:“一个女孩无论多么蕙质兰心、冰雪聪明,如果相貌丑陋、脾气古怪,我也是不会买账的。”

逗号故意把脸一沉:“岂有此理,竟然自比为人家的用户!”

众人嘎嘎而笑。

问号仍有不解:“界面设计不是美工的职责吗?”

“美工设计的一般是静态的视觉界面,更重要的是动态的交互界面。相貌再好,脾气不好也不行啊!”冒号顺手拾起了叹号的比方,“虽然近来出现了交互设计师的职位,专门负责UI / UEUser Interface / User Experience),但毕竟不是每个公司都有的。即便有,程序员如果缺乏充分的认识,也难以达到设计要求。这可是融美学、心理学、统计学、计算机科学等等于一体的高难度的技术活儿啊!”

问号心底泛起的串串疑问的泡泡渐渐开始消散。

 

插语

[1] 20085月,BorlandCodeGear以两千多万美元卖给Embarcadero Technologies

[2] B/SBrowser/Server(即浏览器/服务器)架构,区别于传统的C/SClient/Server客户机/服务器)架构。

[3] 严格说来,局部页面刷新本身并不需要XHR,但刷新的数据来自XHR

 

总结

  • Visual BasicDelphi均擅长可视化快速应用开发,易学易上手,常用于前台的桌面应用。
  • Delphi相对VB的优势在于:可视化框架更优秀;运行效率更高;不限于Windows;支持指针。
  • VB相对Delphi的优势在于:学习曲线更短;便于扩展开发包括MS Office在内的应用程序;与.NET平台更融合(主要指VB.NET);有大公司(微软)的支持。
  • JavaScript为核心的DHTMLAJAX技术,相比其他的富客户端技术有其明显的优势:标准、普及、成熟、毋需插件、对搜索引擎友好。
  • 作为弱类型的动态语言,JavaScript有它的一些问题:基于原型的对象式令人陌生;API相对贫乏;浏览器标准不够统一;IDE和调试工具不够理想;多由不够专业的程序员编写等等。但它本身是一门功能齐全、强大而优美的语言,只要严肃地对待它,它就是一门严肃的语言。
  • 前台编程涉及面专,更关注界面设计;后台编程涉及面广,更关注业务逻辑;底层编程涉及面深,更关注系统资源。它们只是侧重点有所不同,并无真正的难易之别、高下之分。

 

“”参考

[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-05-18 13:03  郑晖  阅读(3039)  评论(21编辑  收藏  举报

导航