Stanley Lippman专访
【IT168 技术文档】
Stanley Lippman 在C++语言方面和C++社团里有很长的历史背景了。他是最初的C++使用者和实现者之一,曾是Bjarne Stroustrup领导的贝尔实验室基础项目组的一员,并做过华特迪斯尼特色动画公司主要软件工程师,撰写了《C++ Primer》等大量脍炙人口的专著。
Stanley 最近加入微软,出任Visual C++设计师,我抓住时机做了个随访,以了解他眼中的Visual C++的过去、现在和将来以及对Visual C++的个人目标。当然,首先也是最重要的是,我要为广大C++开发人员提供一个权威的答案 — 大多数人都有郁闷已久的疑问:我们原先掌握的技术在.NET的世界里是否还能派上用场?C++会降级到win32 开发的次要位置吗?微软会实现持续改进C++兼容性的承诺吗?
记住这一点很重要: Stanely是Visual C++语言设计师,并且他是新任的,因此象MFC、ATL、WTL等库和Visual Studio工具都不在Stanley的影响和经验作用范围之内。因此,这次访谈就集中于大多数开发者都关心的问题: Visual C++的将来究竟如何?
首先,我问Stan是什么吸引他愿为微软工作。
Stanely的 Unix技术背景深厚,同时兼具多种异质平台开发经历。显然,一些平台要比另外一些易用。谈到.NET,Stanley毫不掩饰对其蕴藏理念的欣赏之情。“框架无疑是令人惊奇、丰富和有趣的。”Stanely曾经有在让即使是线程这样概念简单的东西运作起来都很痛苦的平台上工作的经历,因此,有那么一个容易理解的基础类库提供诸如容易理解的线程模型之类的功能并且可被你选择的任何一种.NET语言所访问就极为重要。
对于Visual C++如何胜任于.NET整体蓝图,起初Stanley只有有限的想法,但进一步研究后,他惊讶地(同时也是高兴地)意识到C++非但未被.NET遗弃,实际上更是一流的.NET语言!
那么,对于Visual C++的将来你怎么看?并且,作为新任设计师,你的目标是?
对于未来,Stanley非常明晰。“我坚信Visual C++会有更加繁荣的将来!”。Stanley已经会见过Visual C++开发组,并说他(她)们都有无容置疑的激情和精力。Stanely的目标很简单,“Visual C++将是值得选择的C++实现者”。他的个人目标是让广大C++开发者选择Visual C++并不仅仅是基于工具和平台方面的考虑,而首先是因为它对C++标准有一流的实现。
关于编译器的兼容性
及C++兼容性,Stanley说最新发行版(Visual C++ 7.0)还没有正式出炉,但实质性工作早已潜在进行,这就意味着更广泛的兼容性实现指日可待。他将推动这种兼容性的进程,尤其是在模板领域。
尽管Visual C++ 7.0并没有完全实现Stanley所乐于看到的所有特性,但他宣称这仍是直到目前为止微软发行的所有版本中C++兼容性最好的一个版本。它并非百分之百完美,但仍不愧是一个优秀的高度标准兼容的编译器。凡是仍有争议的问题,将会完整地描述于署题为“Visual C++标准兼容性问题”的VS.NET文献里。
微软的目标是提供一个富有竞争力的兼容的编译器 — 这就意味着它并非百分之百兼容。ANSI/ISO标准提到的几个特性(如施行于模板类的“export”关键字)将不会被实现,因为至少在眼下,理论上讲,微软认为他们语意不清。然而,微软正在努力工作以确保Visual C++能够编译诸如Boost、Blitz、Loki等绝大多数流行库,并且完全兼容STL。兼容的重点在于能够编译最流行的库,而不是百分之百的兼容。
微软C++产品经理Nick Hodapp也补充说,尽管高度兼容性无疑是一个重要的目标,但微软绝不会以牺牲生成的代码质量和鲁棒性为代价来换取极端地兼容。尽管如此,最近实验室测试仍表明:在兼容性这一点上,它仍击败了时下几个流行的编译器!
什么时候可以看到下一个版本?
Stanely大笑起来,他说如果由他来决定的话,他每周都会发布一个升级版。但是,和Visual C++本身一样复杂的诸如质量控制和过程(控制)同样必须要遵守。最新版将于2002年2月左右发行,并期望同年随后对编译器做个升级,但目前尚未确定可能性。当然了,他将为早日实现升级而奋战。Nick hodapp也同意这一点,并说极有可能在明年可以升级到VC7。微软正在调研发行专注于兼容性的编译器的非常好的机制以期给明年带来新气象。
很多C++开发者感觉微软更宠爱象C#这样的新语言而让Visual C++靠边站。
Stanley希望C++将来能比现在在.NET上占有更多的席位。目前,Managed C++最适合作为过渡语言。你可以移植你的本地应用到.NET框架中,或者在你的本地应用中使用.NET组件,但是,这并非开发完全受管制应用的非常好的语言选择。
在这个尚未发行的Visual C++.NET(VC7)中,微软专注于可协同工作能力的特征。在所有受管制的语言中,VC7具有最好的协同工作能力,并且具有在同一个映像中兼备受管制代码和不受管制代码的能力。他们还专注于生成MSIL的优化技术 — VC7是唯一能够产生优化的MSIL的编译器。在将来,微软将集中于ANSI/ISO的一致性的实现 (使受管制/不受管制的代码兼容更多的特性),就象专注于赋予Visual C++和C#同等特征(如WinForms)一样。Visual C++将被定位于.NET的系统语言。
模板支持和泛型编程是必须的,并且微软也非常热切地准备实现codeDOM支持,同样还有ASP.NET和WinForms。随着这些特性的加入,Stanley认为Visual C++必将成为.NET框架下极具威力的程序语言。即使不支持模板,Stanley仍坚持认为Visual C++是唯一能够提供比C#或VB.NET更多特性的语言。
Stanley庆幸微软从以公司为导向转变为以开发者为中心。他将推动公司对开发者更加公开化,并乐于看到微软越来越对开发者更加负责。微软以改革和创新而著称,但也可能成为置标准和开发者需求于不顾的冒进分子,Stanley将努力保证微软更多地倾听开发者社团的声音,同时确保更高的标准兼容。
诸如C99规范里的新特征
在谈到关于是否扩展Visual C++以采纳C99规范的新特性时,Stanley声称有关标准本身尚有待商榷。在C和C++开发中的分歧已经越来越受到关注,C++已经不再是前者的超集了。微软的目标是实现高度标准兼容(但那是针对C++而不是C),如果C++标准被升级并加入新特性的话,微软将把它们纳入Visual C++的实现中。
微软会考虑加入的新特性是:
1.已经被使用于代码中并可被其他编译器所编译,或者
2.这些特性已经成为迫切要求并且显而易见开发者需要它们。
微软不会仅仅因为那些特性在标准中提到就实现它们,而会因为对开发者有用而实现之。
启示
在.NET世界里,Visual C++显然有一个充满生机和活力的光明前景。在简单性、趣味性和兼容性方面,Stanley的目标是把这个编译器做成其他编译器可以参照的基准。它应该易用、通用、讨喜,甚至无论何时,开发者一想到C++就会想到它。对C++兼容性的持续改进以及将来对ASP.NET和WinForms的特性支持,会确保Visual C++必将成为.NET平台上和本地开发的极具威力的语言。
在谈到开发者是否会转向C#而不是可Managed C++时,Stanley认为会有更多的人从VB转向C#而不是从C++转向C#。(Visual)C++是更好的、更富于通用性的并且是.NET上唯一优化的编译器。