Lippman专访的翻译

类别:VC语言 点击:0 评论:0 推荐:

[译注]前些天在这里看到孟岩先生转贴的Lippman访谈录原文,不顾浅陋把它翻译出来,以飨更多的C++爱好者。我自问没有孟先生那样好的文字功夫和技术素养,因此所有的荣誉应归找来原文的那位朋友,如果翻译上有词不达意的地方则是我的责任--doggyzone

 

对新任微软Visual C++架构设计师Stanley Lippman的采访

Stanley Lippman与C++语言和C++使用者群的关系由来已久。他是C++的首批使用者和实现者之一,曾在Bjarne Stroustrup领导下为贝尔实验室基础项目部门工作。他还是迪斯尼公司形象动画设计部门的首席软件工程师,并写过一系列脍炙人口的文章书籍,比如大名鼎鼎的《C++ Primer》。
Stanley最近加入微软,就任Visual C++的架构设计师。我因此有机会抓着他,希望他谈一下他对Visual C++的过去、现在和未来的看法,以及他本人在Visual C++项目上的个人目标。

首先我问Stan在微软工作对他最具有吸引力的是什么

Stanley首先表示了对.NET背后的思想的赞赏。“这个框架真是神乎奇迹、博大精深而且引人入胜。”在Stanley以前使用过的平台中,有的甚至连象多线程这样简单的思想都难以顺利实现。因此Stanley认为.NET的架构中最为重要的特性就是Base Class Library,这样一个包罗万象的库,为程序员提供了包括丰富的线程模型在内的所有东西,而且可以通过任何.NET支持的语言来调用,这是一个奇迹。

[注]请注意,诸如MFC、ATL、WTL和.NET BCL之类的库的设计都不在Stanley作为Visual C++架构设计师的职责范围之内,所以尽管我们谈到了这些东西,但它们的走向并不受Stanley影响。

问:那么你如何看待Visual C++的未来,作为新的架构设计师,你自己的目标又是什么?

Stanley对将来看得非常清楚:“我坚信Visual C++有光明的前途。”他已经见过Visual C++开发团队,并且认为这些人都充满着不可遏止的激情和活力。他的目标也非常简单:“我希望,当人们决定使用C++时,Visual C++会成为它们的首选。”Stanley个人希望,当C++开发人员选择Visual C++作为开发工具时,他们不仅仅是出于对工具和平台的考虑,更是因为Visual C++是对C++标准的最好实现。

标准化的编译器

当谈到与C++标准的符合程度时,Stanley坦陈最新的版本(Visual C++ 7.0)并不理想,但随着对底层实现的扎实改进,相信我们换用一种对标准支持得相当完善的C++实现的日子已经为期不远了。他将在推动标准化方面继续努力,尤其是在模板方面。

尽管Visual C++ 7.0没有实现Stanley认为应该实现的所有特性,但他还是认为这个版本在标准化方面要比微软以前发布的所有版本都好。它虽然并不完美,但仍是一个与C++标准保持了高度一致的出色编译器。在VS.NET的文档中有一篇文章“Standard Compliance Issues in Visual C++”记录了所有仍然与C++标准有出入的地方的情况。

微软的目标是开发一种“相对更加符合标准的”编译器——这意味着编译器可能不是100%符合标准的。在ANSI/ISO标准中有太多太多的特性无法实现(比如给模板类使用的“export”关键字),因为在微软看来这些特性含义模糊,而且在目前阶段,还只具有理论研究的价值。但是微软致力于使Visual C++能够编译大多数流行的程序库,比如Boost、Blitz、Loki和完全符合标准的STL。微软的重点在于在确保流行的程序库能够顺利编译的前提下尽量靠近标准,而不是完完全全的符合标准。

微软的C++产品经理Nick Hodapp补充说,尽管提高标准化程度绝对是微软的一个重要目标,但微软不会为了标准化而牺牲代码生成的质量和健壮性。不过最近在实验室测试中微软的产品还是在标准化方面胜过了一些流行的编译器。

问:我们什么时候能看到下个版本?

Stanley笑起来,然后说,如果由他自己掌握的话,他每周都会发放一个升级版。但是象Visual C++这么复杂的一个项目,有很多烦琐的要求非遵守不可,比如质量控制和进度等等。Visual C++的最新版本大概会在2002年二月发布,他希望这一年的年底之前能够看到一个编译器的升级档,不过到时能否如愿还不确定。他自己肯定会为尽早升级而努力工作。Nick Hodapp支持了Stanley的说法,他表示,VC7的升级档有很大的可能在明年推出。微软明年将布的编译器修正将把重点放在标准化方面,微软正在研究以何种方式发布为佳。

问:许多的C++开发者都觉得微软正在逐渐把注意力从Visual C++转向更新的语言比如C#

Stanley认为,C++现在还是.NET的一部分,但他希望C++能超越.NET的限制而存在。目前使用managed C++的最大好处是它是作为一种过渡性语言存在,你可以把本地应用程序移植到.NET框架下或者在本地应用程序中调用.NET组件,但它还不是开发完全受管的应用程序的最佳选择。

微软在即将发布的Visual C++ .NET(VC7)中把重点放在了interop特性上。在所有受管的程序语言中,VC7具有最佳的interop效能,并且可以在同一个映象中既使用受管代码也使用不受管代码。对MSIL指令进行优化也是重点之一,VC7.NET是唯一能对MSIL指令进行优化的语言。在将来的版本中微软将一方面致力于向ANSI/ISO标准靠拢(将增加许多新特性,这些特性既可用于受管代码也可用于不受管代码),另一方面将为C++增加一些与C#类似的特性,比如WinForm。Visual C++将被定位为.NET的系统开发语言。

对模板和泛型编程的支持是大势所趋,微软在为ASP.NET和WinForm提供代码DOM支持方面也表现得非常热心。在Stanley看来,增加了这些特性之后,Visual C++应当成为.NET框架下编程的第一选择,就象VC++今日在不受管代码开发中的尊崇地位一样。即使没有对现在备受追捧的模板技术的支持,Stanley仍然认为Visual C++应该是那些希望得到比C#或VB.NET更强的功能的程序员的唯一选择。

接下去,Stanley对微软从一个商业味很浓的氛围转向更加以开发人员为中心表示热烈欢迎。Stanley表示他将致力于促使公司进一步向开发人员开放,并且非常乐见微软对开发人员群体负起更多的责任。不过,虽然微软以锐意创新闻名,但如果因为一味的追求贴近标准或者迎合程序员的要求而在改革的路上走过头的话,对微软而言也是十分危险的一件事情。Stanley坦言他的责任之一就是促使微软在进一步贴近标准的同时,更多的聆听程序员群体的意见。

关于C99规范中列出的一些新特性

谈及是否考虑使Visual C++支持C99规范中的新特性的问题时,Stanley表示,这是C++标准制订过程中的一个颇具争议的问题。在C与C++之间如今已经出现了一道裂痕,而且随着C++不再被简单的认为是C的一个超集,这条裂痕愈加引人注意。由于微软的目标是最大程度的贴近标准,因此,只要C++标准把这些新特性收录进去,微软就将在Visual C++中实现这些特性。

微软在考虑是否要加入新特性时,首先要考虑这些特性是否:

1.已经被用于编写代码,而且其他编译器已经可以编译这些代码。或者
2.这些特性非常具有吸引力,以致客户很明确的表示需要这些特性。

微软从不会简单的因为某个特性被标准收录而实现它,微软只会实现那些真正能给用户带来效益,受到用户欢迎的新特性。

对未来的展望

我们得到了一个令人振奋的消息,Visual C++肯定将继续存在和发展,而且在未来.NET的世界里仍将大有作为。Stanley的目标是使Visual C++的编译器成为衡量与之竞争的C++编译器水平时的一个基准——尤其在简单易用、贴近用户和符合标准方面。新的Visual C++将是一个使用方便、用途广泛并且令人愉快的工具,而且无论开发人员希望使用C++的什么特性,他们都可以在Visual C++中得到支持。对C++的后继发展既包括使C++更加符合标准,也包括为其加入对ASP.NET和WinForm的支持。到那时Visual C++将真正成为.NET和单机程序开发共同的最佳选择。

至于目前使用C++的开发人员是否会逐渐转移到C#而不是转移到managed C++,Stanley认为,从VB转移到C#的程序员会比从C++转移到C#的更多。因为C++的功能更强大、适用范围更广,而且是.NET平台下唯一能够进行代码优化的编译器。

本文地址:http://com.8s8s.com/it/it2861.htm