C++将走向何方?
gigix 2003-04-14 11:48:59 idioms:
我不相信stroustrup会说“Loki聪明过头”这样的话。请看这个文章:http://www.25hoursaday.com/CPlusCPlusIn2005.html,stroustrup说c++应该支持Persistence, Reflection, Constraints for template arguments, GC等等,先谈谈Reflection. 如果你使用过java, python这类动态语言,你应该知道Reflection是什么,实际上很多问题域空间需要Reflection的(请看这个文章:http://www.vollmann.com/en/pubs/meta/meta/meta.html)。Loki库搞复杂了吗?其实一点也不,其中的typelist,Loki只用了static meta programming部分,实际上如果解决Reflection,更需要dynamic meta programming技术(MOP是其中一个特点),就是在运行时查询对象有哪些属性和方法(RTTI很cheap,不能算数),能够无中生有地"创建"一个"类",并从这个类new出一个对象。这些特性在项目(尤其是大型项目)里面确实有现实需求的, 不然java不会提供reflection的支持。stroustrup很清楚,所以你说的那些我认为不可能是他说的。
再谈谈Persistence,也是有很迫切的现实需求。Persistence解决什么呢?举个例子:O-R mapping(Object Relation Mapping),为的是解决RDBMS和OO系统之间的阻抗失配。如果要从原有的db schema产生DB Access Layer class,则必须使用meta programming技术,必须使用reflection。你可能会这样说,那我直接用java好了,它支持Reflection,也有很多O-R mapping解决方案。话可不能这么说,原因很简单,不少项目在效率上是赔不起的!
很多人认为Loki过于复杂,实际上里面的各种技巧都不是什么新的东西,建议常常去看看http://www.cuj.com. 其中policy pattern,老早被用得到处可见!你可以去看看ACE库,哪个重要的class不用policy pattern?
Modern C++ Design这本书到底告诉了我们什么?就是以后的Design都能够通过另外的引擎generate出来!!!软件界的无人工厂就要诞生在我们面前了!!到时程序员不需要了,只需要设计师。如
果现在我们还不懂这些技术,以后就等着下岗吧。:) 开玩笑的, 这个理想可能还要很多年,不过计算机技术从来都是几何级数增长的,谁知道呢? 不过现在确实看到这个端倪了。
C++虽然只是一种语言,但它的语言表达力是任何其他语言所不能比拟的。就因为有这种超群的表达力,才能催生出这么多idiom!也大大地促进了软件工程的design部分,如果一个设计人员C++功力深厚,对他的OOD帮助是很大的。当然,软件工程还包括其他很多内容,C++不会有任何帮助,呵呵... :-)
第一次发表,就说了那么多废话。呵呵...
以上是我个人的愚见,如有意见,可email联系: xworkshop@vip.sina.com