去年的这个时候,我写了一篇文章来总结C++的2003年,题目是《波澜不惊》。其实当时我预料,C++的“波澜不惊”不仅会是2003的主题,恐怕也是之后很多年的主题。不过这个预料在仅仅一年之内就被打破,今年微软推出的C++/CLI着实翻起了一些波澜,给本已平静的C++世界涂抹了一缕亮色。按照Stan Lippman的说法,C++/CLI是一座桥梁,将原本属于静态世界的C++与动态的CLI联系起来。动静结合,自然不同凡响。C++/CLI大致将于2005年推出第一个正式版,而大约要到2007年才能够完全成熟。
目前的C++/CLI语言,从设计上来讲可为是毁誉参半。赞誉之词不必多说,至于社群里的反对意见,大致是来自两种情绪。其一是觉得C++/CLI对C++进行了专属的改造,使得自己熟悉的C++代码面目全非。其二是觉得C++/CLI将C++的复杂性与CLI的复杂性统统暴露出来,令人望而生畏。依我看来,第一种责难其实出于一种不必要的宗教虔诚,并不足以为据。倒是第二种看法,颇值得我们担忧,如果得不到很好的解决模型,我们也可以认定C++/CLI只是一小撮专家们手中的屠龙术,而很难产生更广泛的影响。
如果把C++/CLI的喧嚣拨开,看看传统的C++,那么2004年就不仅仅是“波澜不惊”了,甚至可以说是“水波不兴”。我甚至要颇费一番思索,才能够列出一两件事情,来代表C++社群这一年的所作所为,还要担心读者怪罪我小题大做。
Boost库在2004年改进了两版,加入了一些很棒的组件,比如序列化库等等。标准委员会也开会接纳了几个小玩意进入C++ 0X标准。C++社群自2000年以来,倾心于基础库的建设,这对于C++来说的确是必须,但是对于这个迅速变化的世界究竟能起到多大的影响,现在还很难说。其实一直以来,Boost库的精致程度就已经非常高,但是对外界的影响力还不够。我当然乐于看到“三年不鸣,一鸣惊人”的局面,但是对此并不乐观。总的来说,C++社群要加油。
与之相对应的,在实际工程中,C++的应用还是非常稳定地发展着。只不过,人们固执地使用着传统的、基于对象或者面向对象的风格,至多掺入少许的STL。从1998年以来,C++领袖们一直号召使用者转向新风格,现在看来这么多年过去了,效果并不很理想。其中主要的原因,固然是因为通往“新风格”之路的艰辛,也一定程度上是因为新兴动态语言的替代作用。“动静兼济”之美,未必要通过C++自身的涅磐来达成。事实上,类似Python和Ruby这样的动态语言,一方面提供了远远超越Java和C#的动态能力,另一方面又能够方便地与C/C++交互。用它们与C/C++混合开发,毫无疑问是开发应用系统的极佳组合方案。
2004年12月1日,Python升级到2.4。从语言本身来说,2.4与2.3的差别很小,对一般开发的影响几乎可忽略不计。但是,就在12月1日当天,ActivePython、PyWin32等主要Python实现包均同步升级到2.4版,此后数日,各主要Python软件包均升级兼容2.4版,动作之整齐划一,有如一家纪律严明的公司,充分体现了Python社群的成熟,令人震撼。