borland传奇-第35章
按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
更强劲的C/C++开发工具。Borland也在BorCon 2002中透露了一些有关未来C/C++开发
工具的计划。不过在我们讨论C/C++开发工具的未来之前,先让我们看看目前在C/C++
技术方面重要的发展。
首先在C/C++编译器方面Windows平台上厂商的表现实在是差强人意,不管是Borland
或是Microsoft都没有完全实现出符合ANSI C/C++标准的C/C++编译器,这和数年前四
大C/C++编译器厂商彼此竞争激烈、快速进步的情况来说实在是令人不满意,这也可
见失去竞争的市场其进步缓慢的现状。不过Borland已经宣称在发展下一代最佳化的
C/C++编译器,不但能够产生更好的最佳化C/C++编译机器码,而且也将符合ANSI C/
C++标准。相对于Borland在C/C++方面的大动作,Microsoft反而显得比较沉寂,除了
把VC++移植到上的VC之外似乎没有什么大的改善。当然,Borland是不是能
够真地推出宣称的C/C++编译技术还要看在2003年的表现。另外,在C/C++连接器(Linker)
方面Borland也宣称将要搭配新一代的C/C++编译器推出新一代的C/C++连接器,提供
更聪明、更紧密的最终机器码。
除了编译器、连接器和C/C++开发工具之外,另外一股发展快速的C/C++势力便是各种
C/C++的开放函数库和Framework了。许多的C/C++函数库和Framework由于品质良好而
且采用开放源码的设计,因此也快速被许多的C/C++程序员使用而盛行于C/C++程序员
的领域中,除了早为大多数C/C++程序员广泛使用而享大名的STL之外,其中最著名的
当属ACE、Boost和Loki这三个C/C++函数库和Framework了。
C/C++的王牌FrameworkACE
ACE是一个使用面向对象方式设计的C/C++Framework,主要是提供开发通讯应用软件
使用的核心同步处理(concurrency)和分布式设计模式(design patterns)的功能。ACE
提供了C++的封装类别(wrapper)和组件,让程序员在许多UNIX操作系统、Win32平台
和实时操作系统(Realtime Operation System)平台开发高效率的系统服务和应用程
序。ACE Framework提供了将近150000行的程序代码以及450个左右的类。
ACE为了分隔Framework的复杂度,采用了层次的架构来设计,下图就是ACE Framework
的设计架构图。在ACE Framework的低阶层次中封装了OS的Adapter以及C++的封装类
别,以增加ACE Framework在不同平台之间的移植性。而在ACE Framework的高阶层次
中,则提供了延伸低阶C++封装类别的能力,以提供可重复使用的分布式组件以及分
布式计算中间件。由此可知,ACEFramework的目的是提供一个跨平台的中间件
Framework,以便让C/C++的程序员在各种平台中开发高效率的分布式计算应用系统。
由于ACE Framework的流行以及广泛被使用,因此已经被许多C/C++程序员视为主流的
C/C++Framework。目前也有许多的应用程序使用ACE Framework成功的开发出高品质
的分布式软件。例如下图的ACE ORB便是使用ACE Framework实现重要的CORBA规格的
实时ORB引擎:TAO。TAO由于使用了ACE Framework,因此也属于一个免费的ORB引擎,
从遵照OMG规格的CORBA都能够使用ACE Framework来实现这一点,就可以了解ACE
Framework的实用性。读者可以在cs。wustl。edu/~schmidt/TAO。html找到TAO的数
据。
另外一个使用ACE Framework实现的著名软件就是JAWS了。JAWS是一个高效率的
Adaptive Web Server,下图是JAWS提供的复杂,强大的功能。读者也可以在
cs。wustl。edu/~jxh/research/找到JAWS的数据。
由于目前ACE Framework被使用得愈来愈广泛,所以许多C/C++编译器也开始支持ACE
Framework。因此新一代的C/C++开发工具必须能够支持ACE Framework,最好还能够
提供整合ACE Framework的功能,直接在C/C++开发工具内部支持ACE Framework。
Template和Design Pattern的极美结合:Loki
Loki是一个愈来愈流行的C/C++类函数库,它是由Andrei Alexandrescu先生开发的,
而Andrei也是〃Modern C++ Design〃一书的作者。事实上,Loki就是因为〃Modern C++
Design〃一书的介绍才逐渐被许多C/C++程序员使用。
Loki是结合了Design Pattern、Generic Programming和C++语言集成的C++函数库,
充分展示了C++语言的优美和威力,并且提供了C++语言使用新的应用。由于Loki的优
美和盛行,因此现在许多C/C++编译器和开发工具都以支持Loki为重要的功能之一。
最新的C/C++标准函数库Boost
Boost是除了ACE和Loki外另一个快速崛起的C/C++标准函数库。目前Boost已经被C/C++
Standard's mittee提议成为C/C++标准的核心函数库,由此可见Boost的重要性。
目前Boost同样被许多C/C++编译器支持。未来的C/C++开发工具应该在核心部分就会
支持Boost。未来的C/C++开发工具最应该采用的开放架构应该是在核心部分支持Boost
和Loki,并且以开放的Adapter来整合ACE Framework。
著名的C/C++函数库和Framework的开发厂商Rogue Wave
数年前使用C/C++开发工具的程序员可能都知道Rogue Wave这家软件厂商,因为Rogue
Wave就是以提供各种专业的C/C++函数库和Framework著名的。在数年前Borland和许
多的C/C++开发工具厂商也都向Rogue Wave授权使用Rogue Wave的C/C++函数库。我记
得,数年前在使用C/C++语言时最喜欢使用的函数库也是Rogue Wave出品的产品。当
年在C/C++User's Journal、C/C++Report等著名的杂志中,Rogue Wave的产品也是经
常可见的。不过随着C/C++的盛况不再,Rogue Wave的声势似乎也不如前了,许多当
时Rogue Wave著名的C/C++函数库也随着消失,在前一阵子甚至传出Borland可能并购
Rogue Wave的传言。
但是随着C/C++语言最近的重振声威,Rogue Wave似乎也开始有了比较积极的动作,
也推出了许多新的C/C++函数库和Framework,有兴趣的读者可到Rogue Wave的网站上
看看。
不过,Rogue Wave的发展史也见证了C/C+4…语言使用的演变。以前Rogue Wave是以提
供高品质的C/C++函数库著名,例如Rogue Wave曾推出过封装各种数据类型运算方法
的C/C++函数库,但是在STL等开放C/C++函数库流行之后,Rogue Wave的产品自然走
入了历史。另外,Rogue Wave也曾推出过封装ODBC的C/C++类函数库,以提供C/C++程
序员在各种平台使用ODBC存取关系数据库的能力,但是随着0DBC成为历史,Rogue Wave
这样的产品自然也开始消失了。
因此,如何为一个已经流行超过10年的语言不断注入新的创意、技术和应用,是每一
个C/C++开发厂商都必须面对的事情。
C/C++开发工具的未来
那么C/C++开发工具的未来是什么?难道在四大C/C++编译器厂商大战之后C/C++开发
工具的市场便没有创新了吗?除了Microsoft的VC和Borland的C++Builder之外,
Windows C/C++开发工具市场就此沉寂了吗?
当然不,在前面我们看到了C/C++函数库和Framework的蓬勃发展,相较于目前C/C++
开发工具厂商来说是有活力得多了。因此,未来的C/C++开发工具必须能够跟上最新
的C/C++标准以及各种颇具威力的C/C++ Framework。未来的C/C++开发工具除了本身
提供的编译器、集成开发环境和Framework之外,必须采用新的架构设计以提供C/C++
程序员整合Third…Party或是Open Source的C/C++ Framework,而无需C/C++程序员辛
苦地自己修改这些C/C++ Framework才能够使用。另外,未来的C/C++开发工具必须提
供类似Java的高移植性,让C/C++程序员能够在各种平台开发各种C/C++应用系统。除
了一般的应用程序之外,在移动设备、低阶系统程序等都必须能够胜任,而不像现在
的Windows C/C++开发工具一样,各在不同的应用中占有优势。
目前,Microsoft的VC++在窗口平台上的C/C++开发工具发展方向已经非常明显,那就
是维持原生窗口C/C++开发工具的现状并且往VC发展。Borland呢?除了Borland
C++Builder 6。0之外,未来Borland的C/C++开发工具将提供什么新的发展呢?
在前一阵子Borland已经宣布了未来仍将投入大量的资源研发新一代的C/C++开发工具,
将采用下图的架构提供给程序员最具整合威力的C/C++开发工具。
从上图中的架构,我们已经可以预知未来的Borland C/C++开发工具将允许程序员高
度整合最流行的C/C++ Framework,例如前面讨论的ACE、Boost和Loki等。这是非常
重要的,因为未来的Borland C/C++开发工具将提供跨平台/移动设备的能力,而这些
C/C++ Framework也大都提供跨平台的功能。如果Borland能够提供完整的整合能力,
那么这代表未来的Borland C/C++开发工具不管在什么平台,都能够提供最完整和强
劲的功能。
如果Borland真能推出这种新一代的C/C++开发工具,那么这将是Borland从当初Borland
C/C++3。0以来最具创意的产品,也是最值得程序员期待的C/C++工具。Borland是不
是能够遵照承诺推出呢?也许答案在2003年便会揭晓了。
'1;36m昨天'0;37m是'1;32m今天'0;37m的'1;33m历史'0;37m,'1;32m今天
'0;37m将成为'1;34m明天'0;37m的'1;33m历史'0;37m。 'm
每当我们回顾'1;33m历史'0;37m的时候,总会发现两样东西 'm
'4m'1;31m嫣红的血'0;37m,和'4m'1m晶莹的泪'm
'm'1;34m※ 来源:·飘渺水云间 freecityzju·'FROM: pcq''m
^v^v^v^v^v^v^v^v^v
第十三章 软件科技的发展和Borland的未来
〃Into The Future?〃
在前面的章节中,本书讨论了许多现象和问题。除了Borland本身的发展故事之外,
也讨论了一些科技的现状和未来的发展。在Java和平台的竞争以及许多科学技术
的发展下,Borland的未来到底会如何呢?Borland又要如何适应才能够持续在信息界
竞争、生存下去,进而茁壮成为更大的信息公司呢?在本章中我将提出一些个人的看
法。
除了软件公司的发展之外,我也观察到了一些信息技术的走向。这些信息的发展在未
来也都将牵动着开发人员的走向。除了在第10章中讨论的事项之外,我也认为更精致
化的程序开发能力、面向对象和Modeling的平民化、Web Service的发展以及平
台的普及化都将在2003年开始对于开发人员产生愈来愈深的影响。其中,Web Service
和是开发人员无法控制的信息发展潮流。开发人员唯有在了解了它们的趋势之后,
及早准备以适应未来的趋势。
而精致化的程序开发能力、面向对象和Modeling技术的平民化,则是属于比较贴近开
发人员的发展,也是开发人员能够掌握和进一步控制的因素,是软件人员必须了解未
来继续从事软件开发工作时必须克服和掌控的技术趋势。
到底这些因素的影响事项是什么呢?为什么它们对于软件人员在未来有很大的影响呢?
这些也是本章讨论的重点。
不都是整理和抽丝剥茧吗?
我在从事信息工作的生涯中使用过数种不同的程序语言、数据库、组件模型以及
Framework。面对许多新的技术不断地出现,开发人员似乎陷入了永远学不完新东西的
梦魇。不过,如果开发人员仔细回味许多技术的本质,却会发现这些技术其实只是把
我们已经了解的东西再以更细致化的方式加以运用,关键在于开发人员是否注意到了
这些本质和趋势而已。
例如,目前在C++中流行得火热的Template、Policy…Based template,在Java、Object
Pascal和C#中当红的接口程序设计,以及各种组件模型和Web Service中的服务接口
等,如果我们仔细地咀嚼,会发现许多的东西正是发挥程序员原本就拥有的整理和抽
丝剥茧精神,再加以发挥的东西。这怎么说呢?让我们以数个例子来说明读者就容易
了解了。
首先让我们想想为什么会出现数据库这类的产品?很简单,因为由于数据愈来愈多,
数据种类也愈来愈繁杂,因此造成了我们需要一种软件产品能够整理这些数据让它们
更容易的被我们处理和使用,因此才有了数据库的想法和产品。
在每一个程序员学习撰写程序代码时,也会发现随着撰写的程序代码愈来愈多,许多
的程序代码不断重复出现和被使用,因此很自然的程序员开始使用例程(routine)/子
程序(subroutine)或是过程(procedure)、函数(function)等机制帮助我们进行程序
代码整理和抽丝剥茧的工作。
这些数据和程序代码整理的工作几乎是每一个程序员的求生本能,只是有的程序员只
做基本的整理工作,而更聪明的开发人员则对于整理的工作有不同的看法,进而促使
了许多延伸软件技术的出现,也开始对软件开发产生了重大的影响。例如,对于原本
杂乱的程序代码以数据和程序代码分离的看法而逐渐产生了面向对象的技术,以分离
例程/子程序和数据类型为看法的应用则产生了类似C/C++中的template技术,而以函
数面对服务的看法,认为开发人员应该面向服务的开发模式则造成了接口程序设计
(Interface Programming)的应用热潮。虽然现在这些从程序代码延伸出的技术都独领
风骚,在软件开发界中产生了重大的影响和开发模式的改变,但是,如果我们追根究
底来观察,这些技术不都是从对程序代码和数据的分析、整理和抽丝剥茧之后,以更
精致的方式来处理和开发软件吗?
因此,本着相同的想法和精神,聪明的开发人员开始脱离单一程序语言的架构而进入
了开发出可重复使用的软件组件模型,让不同的程序语言都能够在统一的组件模型中
达成团队开发的功效。这个更聪明的整理和抽丝剥茧的想法造就了CORBA、/+
和EJB等组件模型的驱动力。
除了脱离程序语言之外思考的开发人员外,另外有一些开发人员则再次回头检视本身
和他人的程序代码,并且努力搜寻优良和成功程序代码的基因,因此发现了这些优良
和成功的程序代码似乎都有着类似的模式和架构,再经过进一步的分析之后终于产生
了Design Pattern,这成为目前最重要的软件开发模式和技巧之一。在这之后,这些
聪明的开发人员了解到如果能够成功运用Design Pattern,并且把程序设计转变成以
服务为目标的方式,将更能够简化、标准化和结合Design Pattern的运用,并且隐藏
复杂的实现技巧,这就进而产生了Service Interface Programming的观念和技巧。
由此可见,只要开发人员能够发挥细心整理和抽丝剥茧的能力,那么即使无法创造出
伟大的新软件工程或是软件技术,但是仍然能够帮助我们增加生产力和软件品质。因