快速业务通道

神话与谬误:争论C++前你应当知道什么

作者 佚名技术 来源 程序设计 浏览 发布时间 2012-06-30
,结果用复杂的模板技术来实现某种类似的初始化方式;比如不支持auto和typeof,结果用更复杂N倍的模板元编程技术来实现一个模拟;比如不支持内建的alignment指示,导致Alexandrescu在实现类型安全的union的时候用尽了模板元编程技巧;比如不支持内建的foreach,结果借助于诡异的语言角落实现了一个几近完美的模拟;比如不支持内建的concept,导致使用模板技巧来实现也算能用的concept检查…这个列表可以一再延长下去,C++中这样的示例太多了。C++的不完美导致了各种各样的技巧应运而生,哦,不,应该说,应实际需求而生。这从另一个侧面正说明了一点—— C++太需要进化了!

Fallacy #2 ——C++委员会过分关注一些不切实际的语言特性,而不关心标准库的扩充

比起第一个fallacy来,这个倒容易解释清楚了。人家Bjarne在文章和访谈里面一再强调,C++从来都是把库设计放在首位的(这句话其实就意味着,是把最终开发者放在首位的——什么?你难道不用库?),但是C++群体是一个分散多样的群体,而且没有大公司的财力支持。前者意味着众口难调(标准化过程困难),后者意味着不能集中精英的人力(boost库的开发都是由大家业余时间完成的)来搞出个百万美元的免费库来。此外个人用业余时间来开发库还意味着往往没有足够的精力来对库进行精化改善,导致库的质量不佳或者干脆停滞(这样的C++库案例很多)。比如日志库吧,没有一打也有半打,但由于都是个人业余开发,所以没有精力做到尽善尽美,唯一一个往boost提交的是John Torjo(也是个牛人)写的,不过一年前被reject之后就没了动静。你难道怪人家?人家又不是你雇来的。

但说到底,还是钱的问题,众口难调还是终究能调的(boost发起的初衷便在于此)。但没有钱,鬼才跟你推磨呢。 不过好消息是据说boost明年能拿到fund:-) 应该能把boost狠狠boost一把。 至于“C++委员会过分关注一些不切实际的语言特性”就不知从何说起了。首先,前文已经明确说明语言进化的重要性以及实用性,这说明语言进化根本不像人们认为的那样“不切实际”,而是与实用休戚相关的。其实从根本上,语言进化就是为了带来更好的库,以及更好的代码(包括日常编码),这一点跟大伙殷殷企盼着标准库其实并不相左。此外还有一点就是,讨论语言特性比实际去开发库要花更少的精力,这两者花的精力其实不在一个数量级上,开发一个库出来要难得多得多,所以就造成了一种假象——“委员会的那帮家伙只知道倒腾语言”。这个论点错在了两个地方,一,倒腾语言是必要的。二,他们并非只知道倒腾语言,只是库的问题要艰难得多,没钱,人家难道砸锅卖铁给你开发标准库吗?

有同学说,我只要一个能用的库就行了。但问题是,标准库能随便吗?标准库之所以不能随便,是因为像这样受众极其广泛的库可是要负责任的——将会有百万千万行代码都依赖它。如果标准库里面有bug,将会出现几百万上千万行workarounds,这些workarounds依赖于库的bug,为了保持向后兼容性,标准库甚至都不能修正这些bug。就连STL这样漂亮的抽象,迭代器区间还是闯了祸。另一方面,如果只是需要一个能用的库,C++社区有大量“能用”的库。姑且不说boost里面的了。

Fallacy #3 ——C++的强处在于什么都能做

一个最常见的论调就是,java的虚拟机也是C++做的,于是得出结论,java比C++弱,java没有C++好。 姑且不说“好”的定义标准是什么。就算java的虚拟机做的,那C++的第一个编译器还要用C写呢。C库里面的某些成分还要用汇编写呢。这个论据是站不住脚的。 其实,持这种论点的人是站错了位置,问错了问题。

关键的问题不是一门语言能做什么,因为说到能做什么,

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号