近日在有关将C++/CLI纳入ISO标准的会议中,英国代表投票了否决票,这标志着微软企图将C++/CLI并入ISO标准的初步努力以失败告终。
C++/CLI是一个用户不多,争议不少的产品。我曾经在自己的blog里两次触及这个东西,每次都引来喧嚣声一片。我个人的态度是,理解并且支持微软发明一种语法与C++基本相同的新语言,以满足.NET开发的实际需要,但是我并不认为这个东西就是C++,而且也并不看好它会被广泛使用。看来英国人想法跟我比较一致,他们认为这个东西根本就不是C++,因此不能用这个名字,以免混淆视听。现任的ISO C++标准委员会主席Herb Sutter同时也是Visual C++的首席架构师和C++/CLI的主要设计者。不知道他知道这个结果时,心下做何感想。但看来他准备give in,所以提出建议说吧C++/CLI改名称CLIpp之类的怪名字。
我曾经觉得C++/CLI是C++的一个机会,但是现在已经说不清楚这是个什么样的机会了。随着Java、.NET逐渐从时髦词汇变成毫无新鲜感的老生常谈,C++的真实位置也已经越来越清楚。至少在可以预见的未来,在大规模、高性能计算,游戏开发、嵌入式实时应用开发,以及一些传统的客户端软件和构件开发中,C++的位置是稳定的。随着一些超大规模应用的出现和国外大企业研发中心向中国转移,我预期中国市场对高水平C++开发人员的需求会稳中有升。因此,现在我完全不担心C++的命运,因此,也不觉得C++有必要去把握C++/CLI这样一个机会。再说,C++/CLI也算是机会吗?
关于这则新闻,国内外有不少评论,其中有不少人都作证说,他们在微软以及很多知名企业的朋友主要使用C++,确切地说是C风格的C++在开发为千百万人使用的产品。这跟我了解到的情况基本吻合。不过我也知道,跟5年前相比,今天人们对泛型和STL的使用确实是普遍多了。当然,普遍而已,深入就未必了。这倒不是抱怨,其实我觉得,对于C++来说,“学深用浅”是一个很重要的指导原则。对于现在不少公司里稳健的C++开发风格,我是非常赞同的。C的抽象机制太匮乏了,用C++来改善是应当的,但是也需要适度而止,过了火就是主观故意增加accident complexity,有“没事找抽”之嫌。不过作为思维能力锻炼的方法,琢磨一些技巧还是有必要的。《Imperfect C++》还是要看看的,作为技术储备,说不定什么时候就能用上。