Stan:微软聘请我的时候,我对管理层的每一个人说,Managed C++把我惹火了,我明确告诉他们我不会是一个听话的士兵。当年我跟Bjarne Stroustrup一起工作的时候就是这样,对一些事情我有不同意见,我发表了我的意见,而且也做了必要的努力。当然最后可能是别人赢了,我的意见可能被搁在一边,但我不会是个顺民。
说正经的,如果要说Managed C++有一点成功之处,那就是它还能用,而且是把现有代码移植到新平台上的唯一途径。这真的很了不起,我确实感到惊讶。但是从编程语言的体验来讲,它实在是不怎么样。我觉得一部分原因是,MC++的设计者(对于标准C++)过分虔诚了。我比他们更敢于得罪Bjarne,而后来公司的Herb Sutter比我还勇敢。他们应该更坚定一些,他们太缩手缩脚,不够大胆。我在贝尔实验室学到一件事情,那就是你应该对你认为正确的东西保持坚定的信心和热忱。
我想说,MC++确实能够工作,而且是把C++放到.NET中并且包装起来的惟一办法。但是,它不是C++,它的实现就语言而言是不自然的,这一点伤害了很多人。
我之前说过,CLI并不仅仅是微软的平台,它是目前唯一有前景的技术。Java已经基本到头了,我是说它只是一种技术而已,它没有更远大的目标了,它已经竭尽所能了。而.NET是当前唯一一种前景远大的技术。就算这一代的编程语言发展到尽头,也不意味着这个平台本身发展到了尽头。所以,对一种语言来说,如果打算超越原生代码,就必须移植到.NET上。这就是我对C++的义务。(设计C++/CLI)的工作开始以后,很多人参与其中,尤其值得称道的是Herb Sutter,他非常非常重要,C++社群里的很多人都贡献了自己的力量。我很高兴。但是你知道,这并不能归功于我。
C++的路线是Bjarne确定的,我当然觉得这条路线是很成功的,我对于ISO C++的发展方向感到很振奋。但是,我确实不认为ISO C++有多么有趣,我说这话不是要冒犯谁,只是谈我的真实看法。ISO C++很了不起,但是它跟C99一样,只是对语言机制的一些修补和加强。它没有给我提供线程机制,也没有网络的支持。这事放在21世纪,简直是是一种犯罪。而.NET提供了完备的支持库。在我看来,这是C++早就应该做的事情。
你知道,整件事情很令人惊喜:我离开了C++的发源地,贝尔实验室,也没打算再回去,然而我居然还能够参与C++的改进工作,我很高兴。其实我并不认为现在的C++/CLI就很完美了,不过我们已经有了一些非常棒的想法,你们会在下一个版本里看到。
这对C++社群当然是一个挑战。我个人感到ISO C++社群已经变成一个闭关自守的社群了,我们要把它打开。这当然不是一个能取悦所有人的事情。有些人对我们的做法很反感。这跟当年发生过的事情是一样的。当年Bjarne创造C++的时候,很多用C的人也很反感。C++刚出来的时候,有些人觉得它是有史以来最烂的语言。他们要抛弃那些导致性能下降的机制,把虚函数戏称为“破烂函数”。我是说,在实验室内部就存在着这样对立的两派。现在我看到这一幕在重演,有些人警告说,微软正在搞阴谋。我们尽了很大的努力,虚心地听取社群的意见,邀请他们,倾听他们的声音,这一切正如Bjarne在1980年代中期所做的一样,当时他获得了管理层的许可,直接询问IBM和Apple对新语言的看法,其范围和深入程度超过了管理层事前的预期。我的观点是,我们是在发扬Bjarne的精神。所以我想,就算他不是绝对支持我们的做法,也不会是完全反对。