C++的愤青

来源:互联网 发布:澳洲航空 知乎 编辑:程序博客网 时间:2024/04/28 06:16


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++的方向,并紧密联系群众,体会民众疾苦。 

原创粉丝点击