免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: send_linux
打印 上一主题 下一主题

[C++] C++11新特性解析与应用 您知多少?参与获赠《深入理解c++11》(获奖名单已公布-7-18) [复制链接]

论坛徽章:
0
41 [报告]
发表于 2013-07-03 17:55 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
10
CU大牛徽章
日期:2013-09-18 15:20:48程序设计版块每日发帖之星
日期:2016-07-21 06:20:00IT运维版块每日发帖之星
日期:2015-07-30 09:40:01技术图书徽章
日期:2014-10-14 16:00:43天蝎座
日期:2013-09-27 17:41:29CU大牛徽章
日期:2013-09-18 15:21:17CU大牛徽章
日期:2013-09-18 15:21:12CU大牛徽章
日期:2013-09-18 15:21:06CU大牛徽章
日期:2013-09-18 15:20:58每日论坛发贴之星
日期:2016-07-21 06:20:00
42 [报告]
发表于 2013-07-03 20:19 |只看该作者
C++ 功能强大,但在实际工作中C++的强大威力无法发挥出来。
因为每个人工程师对复杂的C++了解与见解都是不同的,
因此无法让每个团队成员都了解这些特性。
因此在真正的业务开发过程中,只是把C++当成方法的管理器。
C++11的全面推广任重而道远。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
43 [报告]
发表于 2013-07-04 10:11 |只看该作者
1、谈谈这些年来C++规范演变给您带来的感受
规范变动比较缓慢,特别是98到1x。1x的规范,lambda,auto能提高开发效率,内存模型总算是解决了线程问题。其他的改动,基本就是修修补补,没有98模板来得震撼。

2、C++作为一门争议性很大的语言,谈谈您这么多年来工作中的使用经验
c++最强的地方在于设计方面。template的可读性、扩展性、代码的复用性、对粒度的控制、使用的方便性比OO强得多。template的设计,参数就一目了然。即使你不了解这个领域,从给出的参数很容易得到线索。现在基本上只有在对内存有要求,才使用oo,而且也会局限在一个局部。如果不是用template,c++的复杂性在于异常、多线程。如果用了template,类型系统的复杂性我觉得超过了线程。因为c++的哲学是不需要的地方不付出代价,如果设计的库要求效率高,扩展性强、使用方面,那么参数、数据成员,都可以分为指针、引用、完整对象、const等等类型。这些交织在一起,非常的复杂。如果要简单,只有折中一下,对这些做好规定。用了template,宏就显得很重要了。这里宏主要是用来生成代码,让模板的使用得以简化。很多人觉得模板复杂,主要是不习惯递归的方式。另一方面,gcc给出的模板编译错误确实不怎么友好,初学者或者经验不是很足的开发人员,基本上是看不明白。这也减少了模板的使用。总体来看,如果只使用c++的一种开发范式进行开发,而不是各种范式混用,c++比其他语言复杂不了多少。

3、口水话题,你为啥使用C++,说说它的优劣之处
template很适合设计,但是还是不够简单。c++可以让你完全掌握资源的使用情况,从而容易做优化。缺点方面,c++没有abi标准,这相当让人无语,include模型比不上package模型。原始类型,没有确定大小,比较讨厌。c++很庞大,范式多,学习时间长,陷阱多。现在最希望的就是c++有一个标准的abi,并且有package。

论坛徽章:
0
44 [报告]
发表于 2013-07-04 13:04 |只看该作者
本帖最后由 幻の上帝 于 2013-07-04 13:08 编辑

1.
进步是有,尤其是文档质量上。
不过,标准化进程扯皮偏多,进度太慢。
举些例子:
为什么C++11没有boost.thread那样的thread cancellation?因为WG21没共识。[来源忘了]
为什么C++11没有concept?时间不够。[都懂得]
为什么std::thread::~thread不像boost::thread::~thread默认detach了,也不join?翻书[ISO C++11]。……为什么H.Sutter又说应该join[WG14/N3636]?……
……什么时候能用编译时反射?
……
鬼知道。
内容方面,不算bug fix(DR),也就std::atomic还算解气(可惜WG14还是拖后腿的节奏)。其它的要不是早就酝酿几年(TR1/move semantics/...),要么就是很不彻底。核心语言特性方面C++很少有激进独创的内容,倒也习惯了。库的演化还是太慢——以实际需求来看。
WG21的paper倒是能开阔眼界带来欢乐,反正我也懒得自己写然后找人头champion。最近略不爽的是filesystem,不过既然是TR也懒得多发表意见了。C++14已经停更了,C++17再说吧。
不过比起某些实现蠕动得令人发指的进度以外,总体已经算是相当令人欢欣鼓舞了。

2.
一个人用起来还是能爽,人一多口水损耗急剧上升……
不但底层用户群体是这样,专家也是,只不过文雅一点罢了。
更坑的是相关教育质量尤其地烂……(实际上如果不算谭X应该是我见过的语言里最烂的……啥,谭C++?这是什么星球上的人说的?
总之除了能靠权威罩着的大路货用法,达成共识的成本很大。悠着点。
但是比遍地小白1024好点。

3.
简单来说,C++很烂——继承了Algol/C-like一贯的烂的地方,不但差不多没什么直接的改进(如类型系统),反而引入更多渣渣(如成员类型)。妥协到处都是,一边制造包袱一边还想甩掉历史包袱……
话说回来……考虑各种因素,就general purposed language而言,其它语言基本上只会更烂;也有少数语言自身的问题相对少点,但实现太不实用。应该肯定的是C++的实现(尤其是后端)的确是比较给力的,虽然还是远不到能放心用的地步。
考虑实现的可用性、照顾其他用户智商等问题,不少情况下不得不用,也总算可以接受罢了。

论坛徽章:
3
金牛座
日期:2013-08-26 10:25:02摩羯座
日期:2013-09-09 15:14:322015年亚洲杯之约旦
日期:2015-05-06 09:33:56
45 [报告]
发表于 2013-07-05 09:47 |只看该作者
路过,看看~~

论坛徽章:
19
CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-09-18 15:15:15CU大牛徽章
日期:2013-05-20 10:46:44CU大牛徽章
日期:2013-05-20 10:46:38CU大牛徽章
日期:2013-05-20 10:46:31CU大牛徽章
日期:2013-05-20 10:46:25CU大牛徽章
日期:2013-05-20 10:46:18CU大牛徽章
日期:2013-04-17 11:19:51CU大牛徽章
日期:2013-04-17 11:19:42CU大牛徽章
日期:2013-04-17 11:19:37CU大牛徽章
日期:2013-04-17 11:19:32CU大牛徽章
日期:2013-04-17 11:19:28
46 [报告]
发表于 2013-07-08 01:08 |只看该作者
前几天安装Boost库,安了半天,也许是自己不会用,一直失败,就是关于那些文件夹放置和系统环境变量设置的问题

论坛徽章:
0
47 [报告]
发表于 2013-07-08 11:44 |只看该作者
1、c++11新增的大部分特性一般的用户用不到,但是对于先写模板库很有用。对auto,list for,lambda,多线程的支持等应该是非常有用的,可惜的是国内仍然使用较早的c++标准,与时代步伐差距较大。
2、还没工作。不过不同的环境应该选用不用的语言,存在即是合理,所以没什么好吐槽的。
3、优势:完全兼容c;基于对象;不使用虚函数等机制时,和c速度一样,某些时候更快,比如:排序;使用面向对象机制时,速度没有下降太多。一言以蔽之,高效且具有较高的抽象层次。另外,有大量的开源库的支持。
劣势:静态类型,没有反射机制,对各种字符编码敏感。

论坛徽章:
0
48 [报告]
发表于 2013-07-12 10:47 |只看该作者
____BlueGuy____ 发表于 2013-06-26 08:23
C++ 都弱爆了, 还功能强大, 无所不能


请教, 您说的弱是指哪方面? 目前还在学习C++的初级阶段, 求指点.

论坛徽章:
0
49 [报告]
发表于 2013-07-12 11:04 |只看该作者
1、谈谈这些年来C++规范演变给您带来的感受
        一个字: 普及起来太他女马慢。
        尤其是对于大型项目,时间跨度很长,本人现在接触的项目,从代码的更新日志上看来,从95年持续到现在,C++的规范都是浮云。因为没有人有如此的魄力去升级编译器。
       

2、C++作为一门争议性很大的语言,谈谈您这么多年来工作中的使用经验
        C++是本人最喜欢的编程语言,没有之一。至于争议,对我而言都是浮云。


3、口水话题,你为啥使用C++,说说它的优劣之处。
        优点:与C兼容,灵活强大。
        缺点:与C兼容,纷繁复杂。
       
        语言设计之初,如果不考虑与C兼容,估计会不会像今天这样的使用率还是未知数。但不得不承认,与C兼容也在某种程度上大大地拖了C++的后腿。
        就本人使用的情况,对它还是有些微词的。比如 template <typename T > 中的T不能在编译期被约束(像其它语言那样). 继承中 子类的 重写函数的访问级别即使小于父类的级别照样成功调用, 而不是像C#那样出现编译错误... 对于 enum E{A, B}, 如果使用时 像C# 这样的话(E.A, 而不是直接 A), 弱弱地觉得会更安全一些……
        当然,瑕不掩瑜。C++一直都是我最爱的编程语言。:)
       
       

论坛徽章:
0
50 [报告]
发表于 2013-07-13 12:41 |只看该作者
1、谈谈这些年来C++规范演变给您带来的感受
怎么说呢,作为一个应届毕业生,可能谈不到很深的感受。我开始关注C++规范的演变还是在公司学习分享栏目才开始的,我觉得规范的演变对我们编程人员来说是一件大好事,新的规范给我们提供了更加方便的解决方案,也使的我们的程序能更高效的运行。但是比如说MSDN上的C++ 11中文文档都是机译的,原版英文文档阅读起来并不是每个人都能很好的读懂的,加上各类博客,论坛的一些新的规范知识文章也是良莠不齐,没有统一的总结归纳,我想这就是为什么很多的我们的编程人员都没有很好的了解到这些新规范的原因吧。总之规范演变带给我的感受是好的,希望能多点介绍这方面的中文资料吧。

2、C++作为一门争议性很大的语言,谈谈您这么多年来工作中的使用经验
C++是我学习的第一门面向对象语言,是我最喜欢的编程语言,但也是一门很难精通的语言。她入门比较容易,但深入起来会发现需要在实际使用当中的逐步积累才能达到,同时你也会发现那些越来越美妙的编程感受,以及她那高效的性能带给你的一些其他语言无法突破的瓶颈。我不敢谈工作中的使用经验,但是我觉得C++的学习过程倒像Y=1/X这个函数式,X表示你学习和使用C++的时间,Y表示你对C++的不了解程度。随着熟练度X的加深,你对C++的不了解度Y会越来越小,但是总会有你还能提升的地方,因为Y他还不等于0呢。

3、口水话题,你为啥使用C++,说说它的优劣之处。
我使用C++首先因为她是我最喜欢的编程语言。然后呢,我工作游戏编程使用的语言也是C++。最后我觉得学习C++很有挑战。
优点:面向对象,效率高,发展了很长一段时间,内容也在逐步丰富
缺点:难精通,不适合快速开发
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP