语言障碍 — 对于编程语言应该如何演化,Java和C++的发明者观点迥异。 荣耀 马皓明 译 计算机编程语言神秘莫测,它们包含有各种莫名其妙的括号、反斜杠和缩略词,允许软件工程师构建诸如“文字处理”或“电子表格”之类的应用软件。对于PC用户而言,工程师手中的工具永远看不见。 一个经典的例子就是C++。尽管普通用户从来没有听说过这门编程语言,但目前运行在PC上的许多软件 — 甚至包括免费电话所依赖的基础软件,都是采用C++编写而成。相较而言,这些程序几乎很少使用Java编写。那么,为什么几乎每一个人都听说过Java呢? 答案部分归因于此两门语言创建者不同的哲学观。“我不喜欢大肆宣传”,Bjarne Stroustrup如是说,就是他发明了C++。事实显然如其所述,C++的发展与演化就是这种“不喜欢”的实证。尽管C++发明于AT&T贝尔实验室的“高墙大院”之内,但C++被Stroustrup先生从公司控制手中夺下,并以免费工具的形式提供给开发者。与C++不动声色地占据支配地位(据称已有150万名C++开发者)形成鲜明对比的是,Java是一个咋咋呼呼的暴发户(估计有70到100万开发者用它工作),它是一门由Sun Microsystems所拥有的编程语言,被定位为一个计算平台、一个操作系统以及一个打击微软的工具,而且还几乎成了世界难题的解决方案。 鉴于这些差别,Red Herring采访了Stroustrup先生和Java的创建者James Gosling,看看“大肆宣传”和“公司利益”到底是否适合一门通用编程语言的成功发展。 事实上的大肆宣传 Java?不过是一门编程语言而已,它能以如此强劲的力量渗透到用户意识之中,不能不说是Sun市场营销部门精干的一个明证。仅仅诞生了4年,在“麦迪逊大街”的包装下和Palo Altobased Sun的强烈支持下,Java俨然已成为下一代网络计算的核心关键。 这样的“定位”是空前的。其前辈诸如C++、Cobol以及Fortran的运作都不为公众目光所及,而在Stroustrup先生看来,事情本该如此。Stroustrup先生目前供职于AT&T,他是新泽西通讯巨头大规模程序设计部门的领导。“假如你知道你正在使用的软件采用何种语言编写而成,那肯定是什么地方出了问题。”他说,“你不应该说得出来。” 事实上,早在1983年Stroustrup先生将C++引介给程序员时,他所做的努力是如此“低调”,以至于他甚至都没有想好怎么花掉AT&T拨给的5000美元市场预算。“我们大约花了1000美元来决定其余的钱该怎么花,花了3000美元办了一次象样的C++研讨会,然后我们把剩下的1000美元交回给AT&T。”他回忆道。 而Java呢?Sun认准了一个机会,让每一个人都知道他们使用的是一种什么样的语言。这家公司从Internet的兴起、消费型设备的普及以及反微软的情绪中获得了动力。Sun宣称有一种语言能够以其他语言所不具备的能力武装开发者 — 使用此种语言编写的程序可以运行在任何地方 — 不管是什么样的平台,什么样的微处理器。 当Gosling先生在观察了90年代初期消费电子市场的发展态势以后,他开始明白人们对这样的一种语言的需求。不同于PC市场 — 那是Intel的天下,消费电子产品数量的增长伴以五花八门的芯片架构为特色。“我们与许多不同的公司交谈以总结出人们统共使用多少种不同的CPU,” Gosling先生说,“这个数字可不小,而且其中有不少是某些公司为自己的产品量身定制的古怪的CPU。” 结果,每一种产品都要配备自己独特的软件,这会导致软件市场的分裂,而这对开发者来说是不利的。“有那么多种类不同的CPU,” Gosling先生说,“同时你还要能够为各类软件开发者提供一个份额足够大的、有利可图的市场。” Gosling先生很快就意识到这样的一种编程语言的价值 — 它可以使开发者编写的程序对给定的微处理器的独特性和约束性具有“免疫力”。“我们是以这样的方式来考虑Java的消费市场的:先占有一群小市场然后将其统一成一个大市场。” Gosling先生说道。随着Internet的普及,这种思想就彰显出更大的价值。 然而,尽管Java品牌渗透的成功难以辩驳,但对这门语言更广泛的隐喻及其总体的成功仍需有所测度。因为Java毕竟还很年轻,许多技术还需要发展演化。更重要的是,由于Java与Sun的微妙关系,它不得不忍受无尽的“政治”论战。Sun希望Java开放且被标准化,但它还要保持对Java的控制,并且充任“当需要对语言做出决断时”的最终仲裁者。 Bjarne的自由理念 与硅谷的大肆宣传行为大相径庭,Stroustrup先生对于Sun对Java的所作所为深表怀疑。1979年,当开始C++的工作时,Stroustrup先生请求AT&T放弃将C++商品化,并将其作为一门免费语言奉献给程序员。“我从来就不喜欢专有语言,我非常谨慎地使C++摆脱AT&T任何可能的直接控制,”他回忆说,“你不可以将一门语言的控制权委托某个人或某家公司,你需要的是一个开放的论坛。假如我和IBM、Digital还有Hewlett-Packard的伙计们一起来决定C++的模样,情况可能就不会好。”(令人惊讶的是,Stroustrup先生关于C++的许多观点来源于非技术领域,他尤其钦敬丹麦哲学家Søren Kierkegaard) Stroustrup先生,这位技术纯化论者(他决定不去创建自己的公司,因为那样一来“你将会离技术太远”),认为无论一门专有语言声称有多么开放,它终将不可避免地将那些“与公司拥有者的游戏规则不同”的人排除在外,而那些规则可能并不符合语言演化的最大利益。他不无骄傲地指出ISO在11月份声明接受C++的标准化,这是经过来自近25个国家的上百家公司和无数个人一致同意的。他说,整个进程都是由“改进语言及其可构建的应用”的期望而驱动,其间不存在任何享有特权的实体。Stroustrup先生强调,这一点至关重要,甚至他本人对他所创造的语言都没有过多的控制权。 监护权之争 毫不奇怪,Sun坚持主张一门专有语言在集体的努力下也同样能够获得广泛的认可。“我们已经与公司以外的人们一起做了大量的工作,而这些东西的开发实际上已成了一种社群工作,这就是Java成熟速度极快的原因,” Gosling先生说,“我们比其他任何工作都更讲究合作。”但是,与微软的争斗以及近期一项关于“Hewlett-Packard正在开发自己的Java虚拟机”的报告都显示,无论初衷是多么得高尚,一门所有权掌握在公司手中的所谓的“开放”语言,还是可能会导致棘手的标准化问题。 Gosling先生显然放弃了这场与Redmond的无休止的争吵。“没有人能够控制微软,”他坦言,“通过我们与他们签订的合同,我们持有某种程度的控制权,但我们寄托于人们对此精神实质的信奉并工作于真诚的承诺之下,而这并不是微软的作风,因此我们现在只好对簿公堂。” 不存在竞争 对于C++与Java的并存前景,Stroustrup先生和Gosling先生都认为两种语言可以共同存在。尽管Java“抢占了头条新闻的位置”,但Stroustrup先生说C++用户人数从90年代初起就一直保持着15%到30%的稳定的年增长速度。尽管很多观察家喜欢对语言比来比去,但Stroustrup先生拒绝评论Java的技术规范,他只对Java表现出少许兴趣,并认为编程语言之间的竞争并不象人们想象的那样激烈。他更关注于C++的日臻完善,“它是一门不断演化的活跃的语言。它持续演化并且与语言的早期特性保持兼容,而这样的演化正是你所希望的。我早期编写的一些C++程序今天还在运行,对我来说这很了不起。” 而在Gosling先生方面,他认为Java目前已经力量完备。他说,早期发现的臭虫已被修复,语言特性已经得到扩充,安全性也已不再构成问题。他还声称Java把开发应用的时间缩短了一半。(许多Java开发者都提到了相同的实际优势,可参阅《Losing Its Religion》)他说,单此一点就“确实正在唤醒一些相当保守的国际标准的管理者。” 假如人们同意Stroustrup先生的看法,那么,一门语言发展成熟的时间进程应该受一个公正团体的舆论而驱动,而Sun显然希望看到Java在未来几年中通过其不断增长的用户而蓬勃发展。但是,当其公司利益与Java以及Java的发展出现分歧的时候,Sun的伎俩便昭然若揭。 |