冒号和他的学生们(连载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应该是互补共生的关系。”
句号发现一个有趣的现象:“初级程序员往往偏爱前台编程,中级以上的偏爱后台编程,有些人则认为只有底层编程的才是真正的高手。”
冒号解释道:“前台编程涉及面专,绚丽花哨的界面更容易让初涉编程者产生成就感;后台编程涉及面广,需要深厚的技术积累和缜密的设计思维;底层编程涉及面深,给人神秘莫测之感。然大道相通,难者亦易,易者亦难。设计一个用户友好的界面与设计操作系统的一个模块,一个是与人直接打交道,一个是与机器直接打交道,孰难孰易、孰轻孰重,焉能一概而论?”