锁定老帖子 主题:我对C++复杂性的一些认识
精华帖 (0) :: 良好帖 (15) :: 新手帖 (1) :: 隐藏帖 (2)
|
|
---|---|
作者 | 正文 |
发表时间:2009-12-13
我学习使用C++,已经有差不多7,8年了。从当年在学校写小程序,到后来在公司写程序做设计。从VC++(虽然它不是标准C++),到后来嵌入式的C++,到现在在项目中,标准的C++。坦白说,C++确实很复杂,和Java, Objective-C,Python,Ruby这些语言比,它确实很复杂。这种复杂来自于几个方面: 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-12-14
嘿嘿,你可以用MC++,有垃圾回收,有反射。。
|
|
返回顶楼 | |
发表时间:2009-12-14
深以楼主的说法为然。
我几年前写过一篇抱怨的短文,当时很多人不以为然。 http://blog.vckbase.com/bastet/archive/2006/01/21/17244.html |
|
返回顶楼 | |
发表时间:2009-12-14
ray_linn 写道 嘿嘿,你可以用MC++,有垃圾回收,有反射。。
那就不是RAII了 |
|
返回顶楼 | |
发表时间:2009-12-14
最后修改:2009-12-14
mikeandmore 写道 ray_linn 写道 嘿嘿,你可以用MC++,有垃圾回收,有反射。。
那就不是RAII了 你要RAII也可以,想垃圾回收,你用gcnew关键字,想RAII,你用new关键字...各取所需。 最恨C++的就是友元,这种明显破坏封装性的东西。 一个例子就是QT里许多类把析构函数设为private,只能在其友元类中被delete. |
|
返回顶楼 | |
发表时间:2009-12-14
作为一个资深的c++程序员,你已经在c++江湖浪迹了很久。你知道,如果要写出一个工业级的c++库,你绕不开模板,oo乃至原生类型。由于这些东西有着天生的鸿沟,融合模板的静态FP特性,oo的动态特性,原生类型没有特性的特性,让你焦头烂额。各种traits,各种接口,更加上你不得不用的函数,而且这个函数还是c++的二等公民,你不得不小心的面对各种诡异的类型。你雄心勃勃的想打破动态与静态的鸿沟,想提供更加方便的借口,你又不得不拾起宏这个声名狼藉的东东来做粘合剂。好了,经过N久的努力,这一坨东西总算看起来融合在一起了,然后你开始编译。当你喝着茶开始make的时候,你基本上会祈祷万能的上帝给你开个金手指。上帝每时每刻都那么的忙,毕竟祈祷的人太多,所以绝大多数的时候,上帝是不会站在你这边。与其他程序一样,很正常的编译出错了。你其实也知道上帝不可能随时站在你这边,你也有心理准备。但是很不幸的是,编译器相当的愚蠢。它总是吐出一坨又一坨你完全上看不懂的东西。你唯一能懂的是,它们中间还有英文。你总是认为,从逻辑上看,代码这样编写是没有错的。你诅咒着标准委员会,为什么这个代码竟然不能通过。没办法,你不得根据英文google,最后只有查看标准。经过多方搜寻思考,你总算明白了为什么,而且又学会了一个细节。于是在你感到欣慰的同时,你不得不感叹这些牛人就是想得多。你也更敬畏c++了。日子不能总这样过,你想。经过这么多折磨,你准备放弃这样的屠龙技。虽然使用屠龙技搞出来的东东使用简单,修改灵活,效率高超,跨平台也好用,但是这妨碍了美好的人生。人生来就是享受的,你这样想。你可不想每天都生活在无尽的黑暗中,被玩着恶龙斗勇士的游戏。oo虽然有接口名限定,虽然代码臃肿,虽然接口巨大,虽然代码生成器很不灵活,但是简单,而且容易维护,毕竟条条道路通罗马,你决定就oo了。于是你流着口水仿佛又看到了你在春天里看着桃花盛开的第二春。yy是一件多么美好而让人喜闻乐见的事情啊...... 呃,慢着,你还是醒醒吧,世界不是你想怎样就怎样的,你得适应社区不是?作为一个c++程序员,你接触的肯定是stl,boost这样顶级的库(什么?你没接触过?不要说你是c++程序员啊,这是给我们丢脸啊),里面可到处都闪烁着屠龙刀光,你这样一个巨鲸帮的三无产品也好意思拿出来献宝?c++社区用惯了简单方便接口的库使用者们,会用你这样的玩意?嗯?transform不能用了?咦?find不能用了?靠!连foreach也不能用了?婶可忍,叔不可忍!你说你不提交给社区,只给手下的小弟用?切,你不是以为小弟们来自火星吧?小弟们也是人哪,他们也是看着stl,boost的主啊。你当然可以用老大的权威让小弟们屈服,但是你头上的光环将会在小弟的眼中逐渐消失,直到只剩下鄙视。怎么样,你还认为你敢只用oo? 好了好了,你终于受不了了。冥思苦想,找到了一条出路:再见了吧c++,还是java吧,简单就是美啊。等着我,java,我来了! 上面写了一堆,算是我搞c++的一些感慨吧。不过我最喜欢的仍然是c++,就是因为极其强大的能力。而且大多数人还是想玩勇者斗恶龙的游戏,虽然多数是被恶龙斗。boost我看过不下7个库实现,基本上看得懂。自己写的东西,确实一直向着boost的方式靠近,其实也就是因为社区文化吧。从本身来说,我其实不喜欢java,java is not platform-independent, it is the platform。我喜欢cpp这样非平台的东东,自由。 |
|
返回顶楼 | |
发表时间:2009-12-14
truekbcl 写道 作为一个资深的c++程序员,你已经在c++江湖浪迹了很久。你知道,如果要写出一个工业级的c++库,你绕不开模板,oo乃至原生类型。由于这些东西有着天生的鸿沟,融合模板的静态FP特性,oo的动态特性,原生类型没有特性的特性,让你焦头烂额。各种traits,各种接口,更加上你不得不用的函数,而且这个函数还是c++的二等公民,你不得不小心的面对各种诡异的类型。你雄心勃勃的想打破动态与静态的鸿沟,想提供更加方便的借口,你又不得不拾起宏这个声名狼藉的东东来做粘合剂。好了,经过N久的努力,这一坨东西总算看起来融合在一起了,然后你开始编译。当你喝着茶开始make的时候,你基本上会祈祷万能的上帝给你开个金手指。上帝每时每刻都那么的忙,毕竟祈祷的人太多,所以绝大多数的时候,上帝是不会站在你这边。与其他程序一样,很正常的编译出错了。你其实也知道上帝不可能随时站在你这边,你也有心理准备。但是很不幸的是,编译器相当的愚蠢。它总是吐出一坨又一坨你完全上看不懂的东西。你唯一能懂的是,它们中间还有英文。你总是认为,从逻辑上看,代码这样编写是没有错的。你诅咒着标准委员会,为什么这个代码竟然不能通过。没办法,你不得根据英文google,最后只有查看标准。经过多方搜寻思考,你总算明白了为什么,而且又学会了一个细节。于是在你感到欣慰的同时,你不得不感叹这些牛人就是想得多。你也更敬畏c++了。日子不能总这样过,你想。经过这么多折磨,你准备放弃这样的屠龙技。虽然使用屠龙技搞出来的东东使用简单,修改灵活,效率高超,跨平台也好用,但是这妨碍了美好的人生。人生来就是享受的,你这样想。你可不想每天都生活在无尽的黑暗中,被玩着恶龙斗勇士的游戏。oo虽然有接口名限定,虽然代码臃肿,虽然接口巨大,虽然代码生成器很不灵活,但是简单,而且容易维护,毕竟条条道路通罗马,你决定就oo了。于是你流着口水仿佛又看到了你在春天里看着桃花盛开的第二春。yy是一件多么美好而让人喜闻乐见的事情啊...... 呃,慢着,你还是醒醒吧,世界不是你想怎样就怎样的,你得适应社区不是?作为一个c++程序员,你接触的肯定是stl,boost这样顶级的库(什么?你没接触过?不要说你是c++程序员啊,这是给我们丢脸啊),里面可到处都闪烁着屠龙刀光,你这样一个巨鲸帮的三无产品也好意思拿出来献宝?c++社区用惯了简单方便接口的库使用者们,会用你这样的玩意?嗯?transform不能用了?咦?find不能用了?靠!连foreach也不能用了?婶可忍,叔不可忍!你说你不提交给社区,只给手下的小弟用?切,你不是以为小弟们来自火星吧?小弟们也是人哪,他们也是看着stl,boost的主啊。你当然可以用老大的权威让小弟们屈服,但是你头上的光环将会在小弟的眼中逐渐消失,直到只剩下鄙视。怎么样,你还认为你敢只用oo? 好了好了,你终于受不了了。冥思苦想,找到了一条出路:再见了吧c++,还是java吧,简单就是美啊。等着我,java,我来了! 上面写了一堆,算是我搞c++的一些感慨吧。不过我最喜欢的仍然是c++,就是因为极其强大的能力。而且大多数人还是想玩勇者斗恶龙的游戏,虽然多数是被恶龙斗。boost我看过不下7个库实现,基本上看得懂。自己写的东西,确实一直向着boost的方式靠近,其实也就是因为社区文化吧。从本身来说,我其实不喜欢java,java is not platform-independent, it is the platform。我喜欢cpp这样非平台的东东,自由。 油菜~ |
|
返回顶楼 | |
发表时间:2009-12-14
c++ 在语法上比c复杂多了
|
|
返回顶楼 | |
发表时间:2009-12-14
C++比较红啊,有没有好的学习方法么?Visual C++2008入门经典 (http://item.taobao.com/auction/item_detail-0db2-04bef330c9d3300976e6e831afaa5f32.htm)
|
|
返回顶楼 | |
发表时间:2009-12-14
楼主的说法我基本赞同。
其实C++的团队开发,应该按照水平分为两种人:一种人开发可重用的库,实际上在库的开发过程中,是难免会使用各种高级特性的,C++的各种特性都有非常合适的应用场景,没有多余的特性;大部分人则为普通编码,使用各种库而已。 项目中都是菜鸟不要玩太多C++。 |
|
返回顶楼 | |