[译者序]我们都在探索软件的未来,让我们回过头来看看过去的十年里发生了什么;我们又记住了什么;我们又将看到什么?
因译者水平有限,如有不当之处,并非歪曲作者本意,请参阅作者原文。
Windows平台
多年以来它变成了一个多块的组合,需要的不仅仅是一些补丁,并使很多程序员和IT管理员因其复杂和封闭的结构而疯狂。但毫无疑问,微软也让用所有PC单一的桌面的程序员的生活更简单。
通过Win32 API,动态链接库和组件对象模型(COM),微软给了开发者一个很大的平台去建造他们的应用或他们都能用的接口。“所有技术集合起来允许开发者为这个平台而创作,这就是微软在第一的位置上设法要做到的,”Frank Dzubek, 在华盛顿的通信网络建筑师协会会长说。可供选择的办法就是要么在DOS世界中的单任务,这是我们都记得的,或为了不同风味的Unix把应用程序写几次。
甚至Sun公司将给这个魔鬼它应得的权力。“微软, 或者故意或者偶然,一定设法在使许多人非常成功的20世纪90年代的软件建造一个基础。对此勿用置疑。”Phipps说。
快速应用程序开发(RAD)
如果你是在20世纪80年代编程,你记得这个过程:把代码写到一个初步的编辑程序(例如EMACS),运行一个命令行编译程序(例如GCC),然后等待喝一杯咖啡时间。图形用户界面( GUIs) 只属于Macintosh,就如图形的程序设计一样。Macintosh的HC(Hypercard)程序使应用程序建立非常容易,而且甚至对编程或编程语言一无所知的终端用户也能建立那样的应用程序,虽然简单, 却提供了一定量需要的功能性。
Visual Basic给开发Windows应用程序带来相同的易用性。早期的Windows应用程序开发简直困难到了可笑的极点。你必须一切从头开始,包括接口,而且这个过程是昂贵的,费时的,有Bug潜伏的,而且这只是对精英程序员而言。你必须提供应用程序的最基本的基础结构和机能关系。Visual Basic通过让你专心于特定的应用程序功能,并非它的内部关联而改变了这一切。VB给你那些你能从工具条到窗体来拖动并删除的现成的零部件(控制)来提供应用程序的UI。更重要的是,所有的这些零部件把那些基础的窗口消息钩建造在里面。那样的话,它们从开发者中抽象了Windows内核和OS操作,因此他或者她只需集中精力于应用程序逻辑。
VB的集成开发环境是图形化的非常易于使用,而且VB也引入了快速应用程序开发的概念,但你牺牲了一定的性能来让这些成就流畅化,并安排它所需要的时间来创建应用程序。像用HC一样,你用VB建立的最初的应用程序是简单的。但是,开发者和商家从开始就意识到VB的价值,并且提高这个工具的性能是如此困难以至于VB的特色只保持了几年的指数般的增长。VB怎样广泛地进入商业应用程序市场呢?现在商业应用程序中VB代码的行数已多于Cobol代码的行数。
VB的RAD能力的最重要的方面: 开发者能从第三方购买控制并且把他们增加到VB的工具条中用于他们的应用。它们将极力夸张这种能力是多么重要。对于一些低成本开发和测试的组件,它使开发者可能购买功能并且用在他们的应用程序中。在许多情况下,你能够购买功能但VB本身并不提供这种能力。
微软把许多VB的RAD特性迅速结合到其它编程工具中,包括Visual C++,它也能让你插入第三方控制。微软的竞争者也把RAD特性集成到他们的开发工具中。例如,Borland(Inprise)的Delphi开发工具比VB晚问世两年,但已经常在实现新的特性时在速度上超过VB。今天在开发和实现一组预定功能的时间总量是你决定使用哪一个开发工具的重要考虑。
与RAD密不可分,集成开发环境提供了一种易接近的方法来控制开发项目的所有方面(甚至是多个项目)。它们也是可伸缩的,允许诸如集成Bug跟踪和报告,调试器和代码生成器等作为附加工具,而不论它们来自编译器厂商或第三方厂商。
“IDE惟一的最占优势的因素是能够有立即打开的多重的窗口,”Coplien说。当每件事依次地被完成时,开发者能同时看见每件事而取代了过去的批处理。“当开发者做大型设计时,他们可立即观察若干种观点。然后把他们能十分精细地看不同的模块或者配置管理,并同时看代码和测试脚本”。
VB不仅是Windows应用程序快速开发的先锋,也是集成开发环境开发的流行创始人。RAD对开发者掩盖了像铅锤测量这样的细节,而IDE则优化了开发过程让程序员专注开发,而不是做琐碎的家务(SDK风格)。自从诸如永远可见的包含窗体控制的工具箱和工程文件管理器变得普遍后这样简单的改革以来,开发者生产率从未变得如此高。
第三方组件和工具
这极少的10个杰出成就不是孤立的。当许多都相互依赖时,没有比今天健壮的第三方组件和工具市场更加需要相互依赖的。作为RAD开发工具,Visual Basic占据了重大的市场份额,作为平台,Windows有绝对优势,而且作为被广泛采纳的促进了基于组件的开发OOP,在过去的十年里,对框架组件来说,这些是完美的。
今天,程序员能从接口小部件(例如,一个适用于VB的较好的栅格控制)专门研究,或高性能组件(如图像显示和操纵或Bar-Code翻译)中选择。每一个都由一个销售商的巨大阵列提供,或大或小。今天的工具市场反映了今天的开发状态: 需要更多高稳定性和高可靠性的工具—就象Internet, Web和XML工程支持等快速增长的片段。
但是组件仅仅是一幅画的一半。十年来,传统(非PC)的开发者已有一套健壮的工具在过程的所有的步骤中推动开发。因为RAD鼓励迅速原型,它如此鼓励这些原型成为产品应用程序的基础,而不用关注要点设计回顾。同时,适用于RAD建造应用程序的调试和测试工具仍然处于胚胎期。今天,一些适用于设计过程所有步骤的强大工具将RAD渗透到了企业应用中,而且使VB应用程序和老学校的COBOL应用程序一样能生存于商业,或关键任务代码中。
解决问题的一把钥匙,远瞻生存周期工具:源代码管理。代码管理应在计算机工业中得到与奥斯卡最佳配角相等同的地位。就像没有源代码管理而试图写写最根本的软件。商业化的和开放源码的产品已使生活容易了许多,并且已协助完成了许多主要项目。“那些没有源码管理工具的项目不能发布,” Coplien说。
“代码管理是过去10年期间软件的幕后英雄之一,”说Phipps。“CVS是奇迹之一孩子们。它不是非常富有魔力的,但今天拥有一个伟大的源代码管理系统造就了开放源代码世界的工作”。[待续]