免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 17673 | 回复: 76
打印 上一主题 下一主题

[C++] 收到《Imperfect C++》了,说说我的感想……(更新在第40楼) [复制链接]

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-10-21 13:57 |只看该作者 |倒序浏览
本帖最后由 starwing83 于 2012-10-22 18:49 编辑

更详尽的说明请移步本帖第40楼

感想是,(估计@边学CPP边骂CPP会开心了)这本书坚定了我不在严肃正式的项目里面使用C++的决心…………

我是知道C++在某些方面会无力的,但是我只是没想到会无力到这种程度………………

对ABI来说,objc做的都比C++好。

C++自身还有很多的问题,static和匿名名字空间、链接顺序、初始化和销毁以及销毁以后可能产生的死引用……我就随手一翻看到的东西就让我颤栗了。我不知道作者水平怎么样,但是无疑他的说法是很公允的。这种公允的态度更加加剧了我对C++的“偏见”:

C++作为一种目前地球上最复杂的计算机语言,用作研究的目的是很不错的,但是实用?还是算了吧………………

反正我也投入纯C怀抱很久了= =

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
2 [报告]
发表于 2012-10-21 14:01 |只看该作者
大爱纯C和纯C++(仅仅用最基础的封装与单继承多态).

论坛徽章:
0
3 [报告]
发表于 2012-10-21 14:32 |只看该作者
你不必使用C++的全部特性, 只需要限制一下, 就是好东西了.
比如尽量都public, 不希望随便使用的以_开头.


我有些郁闷的倒是不同编译器扩展不一致.

比如Gcc可以
template<T>
__attribute__((aligned(sizeof(T)*2)) class complex {
public:
     T  _real;
     T  _imag;
};

这个很好玩, 别的编译器没有..

如果对这个对齐进一步考虑,
比如 template<typename T, int N> __align__(sizeof(T)*2) class vec{...};
typedef vec<float, 4> float4;

这个float4就容易优化了...
而且内部重载数学运算, 那就可以自动sse, Avx, 效率很高的.

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
4 [报告]
发表于 2012-10-21 14:34 |只看该作者
俺觉得这样可行 -----
   自己尽量用C++,尽量让别人用纯C

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
5 [报告]
发表于 2012-10-21 14:36 |只看该作者
回复 3# gtkmm


    有些问题是避免不了的,比如说ABI,比如说C++在动态链接的情形下使用,比如STL(或者任何模板)导致的复杂错误信息。

这些在实际使用中都切实造成问题了,不是说有些高级特性不用就行了的。

C++的问题就是太透明了(或者说太不透明了,似乎是一个意思),很多东西为了所谓的“灵活”不加定义,导致实际上很难妥协。

论坛徽章:
0
6 [报告]
发表于 2012-10-21 14:57 |只看该作者
我觉得人在学习c++都会经历如下阶段:


1. 好强大的万能语言,我要好好学.
2. 看完几本经典, 对C++的特性自认很清楚, 比如多继承什么的, 仍然认为这是强大的语言.
3. 书看够了,开始写代码了, 这个时候觉得Stl很强大, 开始接触Stl并研究Stl的代码.
4. 开始研究实际项目, 发现不是stl所能涵盖的, 什么进程线程, io, 开始困惑.
5. 为了解决困惑, 研究面向对象程序设计, 设计模式, Ace等,
     开始可能觉得这些东西也很强大,   不久发现仅仅解决小问题,居然这么麻烦啊,
     而且到处陷阱, 我靠, 这C++还让人用么...
6.  有的人发现了boost, 研究了boost, 打开了c++的另一扇窗.
6.  不过, 不久都开始困惑迷茫, 有的人回到了C, 有的人研究Python,有的C#, 思考如何工作的人就此止步    了.思考语言的人去研究D, Go, cilk, haskell, 甚至matlab, idl, S, R.
7.  思考语言的人可能会有自己创造语言的冲动, 比如试图hack gcc, clang, 但是他的思维已经被java, c#, python, 限制了, 一种for system的语言, 还包含这些特性,只能是C++.  因为C++几乎包含了其他语言的一切.
8.  之后, 也许有人保留着对世界的不满, 设计自己的C++库吧, 按照简洁,高效, OO, 弱耦合,这些原则吧.
      也有人颓废了, 发誓从此不写代码...

论坛徽章:
0
7 [报告]
发表于 2012-10-21 15:03 |只看该作者
starwing83 发表于 2012-10-21 14:36
回复 3# gtkmm

这个不算什么问题吧,什么语言都有. 你能举个例子么

论坛徽章:
0
8 [报告]
发表于 2012-10-21 15:04 |只看该作者
回复 6# gtkmm


    非常赞同,我的选择是写自己的一套framework

论坛徽章:
0
9 [报告]
发表于 2012-10-21 15:29 |只看该作者
c++ 的根本问题就是书太多,谁都想说几句。 object c++ 也好 java c# 也好,学语言就那么几本书,学点语法就干活了,没有那么多废话。
而很多 c++ 的书,不去关注具体实践,就研究这个语法那个陷阱。试问,什么东西架得住这么研究,这是用显微镜看美女。

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
10 [报告]
发表于 2012-10-21 15:39 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP