去年的这个时候,我写了一篇文章来总结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社群的成熟,令人震撼。
然而,对于python来说,本年度最令人振奋的消息是ironpython的横空出世。ironpython不仅向python社群证明了.net平台,也向.net证明了python。其开发者jim hugunin已经被微软招入麾下,专职研究.net平台上动态语言的实现技术。python等动态语言有望将软件的开发效率在java和c#的基础上进一步提升2-5倍,所以,毫无疑问的,我们当然希望python能够进入.net,成为一等公民。不过一般来说,2005年恐怕还不可能。微软还是非常热衷于推销自己发明的语言,而对于开源社群的贡献保持着一种官方的矜持。也许java社群在这方面反而要更积极一些。
日本人yukihiro matsumoto发明的ruby语言,以其更纯粹的面向对象支持、更一致的类型系统和为人津津乐道的block/iterator结构而迅速崛起,逐渐呈现与python分庭抗礼之势。对于熟练的python开发者来说,ruby的吸引力并不是很大。但是对于刚刚踏入动态语言世界的c++/java程序员来说,ruby似乎比python有更大的魅力。2003年8月,ruby发布了1.8版,这是一个比较大的升级。而2004年,ruby再接再厉,连续推出1.8.1和1.8.2,同时,ruby社群成立了rubyforge网站,实现了力量的大整合,其发展势头更加迅猛。
脚本语言老将perl今年把精力投入到了perl 6上。虽然距离perl 6的成形还很有一段路要走,但是perl 6已经成为热门话题,o'reilly甚至已经出版了一本书。而源于巴西的动态语言新丁lua发布了5.1版,以其独特而小巧的设计、出奇的高效令世人惊讶。
总的来说,在动态语言领域里,老将的优势是支持库丰富,新丁的特长则是语言设计优美,新老各有优势,让人难以取舍。如果能新老结合,岂不是很美好?这就是parrot项目的初衷――为动态语言提供最优化的基础运行平台。在2004年,其版本号升级到0.1.1。我们已经可以憧憬一个这样的未来,即python、perl和ruby自由协同,互相无拘束地调用。因此可以说,parrot vm是比任何单个动态语言发展都更为意义深远的事件,如果动态语言家族实现大统一,整个编程世界将被非常深刻地影响,今天任何一个执迷于java或.net世界而无暇四顾的人,在不久的未来都将为此而深感震撼。
事实上,动态语言本身的能力是有局限的,一般而言其效率也是较差,但是与c/c++的相互结合,使得程序员在开发时得以动静兼济,取长补短。很多人都相信,动态语言是编程技术发展的新方向。纵观2004,展望2005,这种预测是很有希望成为现实的。
2004年1月26日 boost 1.31.0发布
2004年3月22-26日 c++标准委员会在悉尼召开第33次会议
2004年3月23日 lua 5.1 work 0发布
2004年4月11日 微软发布visual c++ toolkit 2003
2004年4月20日 gcc 3.4.0发布
2004年5月27日 python 2.3.4发布
2004年8月 linux standard base 2.0加入一个c++ abi标准
2004年8月 微软发布visual c++ 2005 express beta,展示新的c++/cli
2004年10月1日 ruby语言的权威著作《programming ruby》第二版问世
2004年10月 c++标准委员会在微软总部雷蒙德召开第34次会议
2004年11月8日 ruby 1.8.2 preview 3发布
2004年11月19日 boost 1.32.0发布
2004年10月29日 parrot 0.1.1发布
2004年12月1日 python 2.4发布
闽公网安备 35060202000074号