泛型程序设计是C++的发展方向或者是出路吗?

 

最近看了《C++设计新思维》一书的前几章,总的感觉是不怎么爽。比起以前看《泛型编程 and STL》,boost库起来,感觉该书描述的东西太过于注重模板的技巧,C++是一个编译型的语言,一些动态语言很容易实现的功能C++实现起来就很难,我们完全没有必要硬是用大量的模板来强迫C++在编译期实现这些动态特性。语言只要是好用就行,而现在C++代码里几乎全是模板,并且越来越复杂,不知道以后谁还愿意这样写C++?难道泛型编程就是C++的发展方向吗?

posted on 2007-05-04 14:03 bo 阅读(3140) 评论(5)  编辑 收藏 引用 所属分类: Language

评论

# re: 泛型程序设计是C++的发展方向或者是出路吗? 2007-05-04 16:16 FlyingBear

我觉得《C++设计新思维》这本书更像是一篇学术论文,它所描述的东西理论价值更大一些吧,用的时候就自己看着办好了,像smartwin里的policy,就算是用得比较成功的例子吧  回复  更多评论   

# re: 泛型程序设计是C++的发展方向或者是出路吗? 2007-05-04 16:31 空明流转

首先,C++的模板更多的是给库设计者使用的.现有的模板使用困难的情况主要是由编译器无法正确良好的定位错误.对于一个库的设计者,必要的编译器灵活性是必须的,而且现有模板仍然满足不了灵活性的要求.所以0x里面还是要推出更加灵活更加泛型化的Concept;
然后,C++的模板被用到现在这个样子当时也没有人预计到.最早B.Stroustrup也仅仅是认为模板就是附带了编译器验证类型的宏而已.metaprogramming完全可以看作是一群无聊的人在无聊的时候想出来取乐的智力竞赛题,只是Alexandrescu只是把这个游戏玩到登峰造极.实质上除了Typelist和自动继承层级以外,其它的库,特别是基于策略的思路构造的库,都让程序库的设计者大开了眼界,同时从他的实际使用情况来看,对很多问题而言,这种设计的适应性很好,结构也并不复杂.再加上未来的0x的语法糖,也会让Loki一类的库使用起来更加方便.至于他的书的头几章节,这种底层的东西总是要有些技巧性的,BOOST的MPL还不是一样写的神乎其神的.  回复  更多评论   

# re: 泛型程序设计是C++的发展方向或者是出路吗? 2007-05-04 19:07 missdeer

Bjarne看了那书也说人家是“too clever”,呵呵
就像前面的老兄说的,模板技术、泛型编程更多的情况是适用于库作者
现在大量的C++库,包括Boost、Loki以及很多Language Binding库,都用到了书中提到的Policy技术,确实解决了以前存在的一些问题  回复  更多评论   

# re: 泛型程序设计是C++的发展方向或者是出路吗? 2007-05-04 19:32 LOGOS

个人比较认同“基于策略的思路构造的库”,这也是我期望模板所能带来的优越性。  回复  更多评论   

# re: 泛型程序设计是C++的发展方向或者是出路吗? 2007-05-28 10:53 longshanks

模板带来的是强类型的多态(利用静多态)。它的好处就是利用强类型在编译时拦截大量的错误。同时,类的出现,使得操作成为类型的一部分。强类型化后,不仅仅数据结构的逻辑性得到检验,连施加在这些数据上的操作也得到约束。因此,合理地运用模板和随之带来的强类型多态,可以使得代码更高效,更简洁,也更安全。
由于业界的大多数程序员还在努力消化OOP带来的技术革命,还无法理解gp带来的优势。不同于OOP,业界也还没有出现GP方面完整的理论,所以对模板及其带来的好处还未能充分理解。  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2007年5月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

导航

统计

常用链接

留言簿(4)

随笔分类(23)

随笔档案(23)

URL

最新随笔

搜索

积分与排名

最新随笔

最新评论

阅读排行榜

评论排行榜