原创 C++的愤青收藏

 | 旧一篇: SlickEdit 一些使用技巧


C++98中曾经的一些stl class的接口过于晦涩,例如最最最基本的string,其接口简直可以说是摧残人性。C++的list等几乎所有需要分配额外node的容器都是通用的,但是并非高效率的,在高性能的情况下并不适合,不如使用linux中的list_head这种预先需要被插入元素有特定数据成员的方法,简洁,高效仍不失为一种优雅。

C++0x 新增加的一些libs越来越沦为一些C++语言Guru的卖弄技巧的玩物,脱离平均水平的C++程序员越来越远。

无休止的使用template,造成语义模糊,难以理解,大量的语言dirty角落的细节背景,各种编译器的trick,编译时间增加,代码膨胀,无法调试,仅仅满足编译器编译成功,没有考虑到很难有合适的工具来解析整个源代码文件来生产tags,references等,难以跟踪bug,这些都是过渡追求技巧带来的直接后果。实际上更加进一步降低了C++的生产力,特别是非guru们。

异常处理仍然过于复杂了,如果要实现强异常安全,或者基本异常安全在C++中都不容易。也就是guru们说的写“异常安全”的代码太难了,看看stl::stack的pop方法签名就明白了。但是,如果你不是开发核电站控制程序,其他大部分情况下你只要不自己抛出异常,那么可能的唯一情况就是内存异常,这种情况为什么不“难得糊涂”呢?crash就crash吧,最多打印一行遗嘱,而由此带来的代码简洁是一种不错的选择。

C++的内存问题从来都没有宣传的那么恐怖,内存问题过于夸大了,使用合适的工具,宏替换等手法,可以检测出绝大部分的内存泄漏,倒是一些系统资源很难检测,没有确定性析构的语言更加没有什么好方法,C++的RAII是一个更好的选择。

C++最需要的不是GC,而是一些朴实的,不卖弄语言技巧的,跨平台库的,也许是准事实标准的库。能够有朴实的interface,同时内部的实现也通俗易懂,哪怕写法不是那么的优雅,但是越容易,简单的东西就越有市场。

c++需要一个绝对权威,能够控制整个C++的方向,并紧密联系群众,体会民众疾苦。 

发表于 @ 2006年11月26日 13:26:00|评论(loading...)|编辑

 | 旧一篇: SlickEdit 一些使用技巧

评论

#eXile 发表于2006-11-27 00:12:00  IP: 218.15.154.*
不敢苟同.
我觉得通过使用内存池技术(如SGI stl) , stl 中的 list 的效率完全不用你担心. 我不知道你所谓高性能的情况下不适合的原因是什么, 至于string , 可能是一个个人使用习惯问题, 如果你不习惯它的接口的话, 完全可以在它的基础上派生, 扩展为自己的接口. 这种技术在<C++缺陷>中有详细的介绍.
我们不需要纠缠于语言的细枝末节, 现在基本上很多应用领域都有一些成熟的, 开源的, 达到工业强度的C++库, 就看你找不找得到, 会不会用了....
愤世嫉俗, 看什么问题都不顺眼, 这可不是解决问题的办法......
#ilovevc 发表于2006-11-27 09:59:00  IP: 152.104.165.*
我是C++的愤青,不是其他语言的,因此喜欢发发牢骚。你俩怎么都认为我连发发牢骚的权利都没有呢?对不对可以指正。
#Holyfire 发表于2006-11-27 09:46:00  IP: 210.13.106.*
一:国外的水平确实要领先一些,不要一天到晚guru的叫,好像很烦别人卖弄学问一样,别人想问题也是要考虑实用性,但是重口难调,不可能为了你个人喜好去做针对性的改革.

二:现在还不是国外做什么国内用什么,你只有跟着走的份,叫也没用,不喜欢自己可以去做

三:通用性,高性能本来就存在茅盾,高性能很多都是牺牲通用性来增强性能的,需要高性能可以采用别的实现,看来你现在也是这样做的

四:LZ确实是愤青,赞一个
#Holyfire 发表于2006-11-29 09:49:00  IP: 210.13.106.*
呵呵,貌似你的话题已经跑了啊

既然只是发发牢骚,那就随意发吧,我的回复只是对你的观点而言
发表评论  


当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
Csdn Blog version 3.1a
Copyright © ilovevc