作家
登录

你用C++踩过多少坑?编程业界大牛带你了解真正的C++

作者: 来源: 2017-12-01 12:13:19 阅读 我要评论

CTO练习营 | 12月3-5日,深圳,是时刻成为优良的技巧治理者了

5)《C++演变和设计》这本书中举了很多例子往返应那些批驳C++有运行机能问题的人。C++在其第二个版本中,惹人了虚函数机制,这是C++效力最大年夜的瓶颈了,但我小我认为虚函数就是多了一次加法运算,但让我们的代码能有更好的组织,极大年夜增长了法度榜样的浏览和降底了保护成本。(注:Lippman的《深刻摸索C++对象模型》也说清楚明了C++不比C的法度榜样在运行机能低。Bruce的《Think in C++》也说C++和C的机能相差只有5%)


C++的初志

1)早期C++很多的工作是对于C的强化和净化,并把完全兼容C作为强迫性请求。C89、C99中很多的改进恰是大年夜C++中所引进。可见,Stroustrup对C说话的供献异常之大年夜。今天不管你对C++怎么看,C++切实其实扩大和进化了C,对C造成了深远的影响。

2)在C++兼容C的过程中碰到了不少设计实现上的麻烦;以及保守的K&R C法度榜样员对Stroustrup的批驳。很多人说C++的恶梦恶梦就是要去兼容于C,这并不无事收成Java就干的比C++彻底得多),但这并不是Stroustrup推敲的,Stroustrup一边在使尽全身解数来兼容C,另一方面在拼命地优化C。

3)C++最大年夜的竞争敌手恰是C,他的目标就是——C能做到的,C++也必须做到,并且要做的更好。大年夜家认为是不是做到了?有若干做到了,有若干还没有做到?

4)对于同时存眷的运行效力和开辟效力的法度榜样员,Stroustrup多次强调C++的目标是——“在包管效力与C说话相当的情况下,加强法度榜样的组织性;能包管同样功能的法度榜样,C++更短小”,这恰是浅封装的核心思惟。而不是过渡设计的OO。(参看:面向对象是个骗局)

6)这本书中还讲了一些C++的苦楚的弃取,印象最深的就是多重持续,提出,拿掉落,再被提出,反复很多次,大年夜家在得与掉中赓续地辩论和弃取。这个过程让我最大年夜的收成是——a) 对于任何一种设计都有好有坏,都只能侧重一方,b) 完全否定式的批驳是不好的心态,好的心态应当是扶植性地批驳。

你用C++踩过若干坑?编程业界大年夜牛带你懂得真正的C++

C++有若干坑

C++在解决了很多C语的坑的同时,也因为OO和泛型又惹人了一些坑。消一些,加一些,我小我感到上总体上只比C多10%阁下吧。然则你有了开辟速度更快,代码更易读,更易保护的500%的好处。

C++的编译对标准C++的实现各别,支撑地也千差万别,所以会有一些比较奇怪的问题,然则如不雅你一般用用C++的封装,持续,多态,以及namespace,const, refernece, inline, templete, overloap, autoptr,还有一些OO 模式,并不会出现奇怪的问题。

C++是一门很恐怖的说话,而比它更恐怖的是很多不合格的法度榜样员在应用着它。

很多编程大年夜牛对C++的情感波动是:先是爱好地要逝世,然后是恨地要逝世,最是的又爱又恨,爱的是这个说话,恨的是很多不合格的人在滥用和凌辱它。

C++的将来

C++说话成长大年夜概可以分为三个阶段(摘自Wikipedia):

  • 第一阶段:

    这一阶段C++说话根本上是传统类型上的面向对象说话,并且凭借势接近C说话的效力,在工业界应用的开辟说话中占据了相昔时夜份额;

  • 第二阶段:

    这一阶段因为标准模板库(STL)和后来的Boost等程式库的出现,泛型程式设计在C++中占据了越来越多的比重性。当然,同时因为Java、C#等说话的出现和硬件价格的大年夜范围降低,C++受到了必定的冲击;

  • 以Loki、MPL等程式库为代表的产生式编程和模板元编程的出现,C++出现了成长汗青上又一个新的岑岭,这些新技巧的出现以及和原有技巧的融合,使C++已经成为当今主流程式设计说话中最复杂的一员。

在《Why C++? 王者归来》中说了 ,机能重要就是要省电,省电就是省钱,在数据中间还不明显,在手机上就更明显了,这就是为什么Android 支撑C++的原因。所以,在NB的电池或是能源竽暌箍现之前,如不雅你须要重视法度榜样的运行机能和开辟效力,并更存眷法度榜样的运机能,那么,应当首选 C++。这就是iOS开辟也支撑C++的原因。

今天的C++11中不只有更多更不错的器械,并且,还填了更多本来C++的坑。

你用C++踩过若干坑?编程业界大年夜牛带你懂得真正的C++

总结

小我认为C++的坑其实并不多,因为C++太灵活了,想怎么搞就怎么搞,所以,各类不经意地滥用和乱搞。某些人C和C++都没学好,大年夜多半人用C++写C,所以,C的坑和C++的坑归并了。如不雅你能花两到三周的时刻读一下《Effecitve C++》里的那50多个条目,你就知道C++里的坑并不多,并且,有很多条目告诉我们C++是怎么解决C的坑的。然后,你可以读读《Exceptional C++》和《More Exceptional C++》,你可以懂得一下C++各类问题的解决办法和一些常见的经典缺点。

C++并不完美,但学C++必定让你受益无穷。是那些不合格的、想对编程速成的法度榜样员让C++变得坑多。

而对于STL中的各类坑,我认为是法度榜样员们还对GP(泛型编程)懂得得还不敷,STL是泛型编程的顶级实践!属于是大年夜师级的作品,一般人很难解得。必须承认STL写出来的代码和编译缺点切实其实相当复杂晦涩,太难解了。这也是C++的一个诟病。

【编辑推荐】

  1. 联手!Facebook,谷歌,IBM和红帽合作开放源代码许可证!
  2. Python薪资又涨了!这可咋办!
  3. Adobe颁布下一代Photoshop机械进修功能,抠图只需轻松一按
  4. Win10偷笑!Mac重大年夜安然体系马脚被修复 苹不雅报歉

      推荐阅读

      谷歌地图进行iPhone X“刘海适配” 画面全屏填充

    CTO练习营 | 12月3-5日,深圳,是时刻成为优良的技巧治理者了 苹不雅 iPhone X 手机采取了独具一个的刘海设计,在花费者和开者中激发了审美争议,这个刘海也给手机软件开辟者带来了巨大年夜>>>详细阅读


    本文标题:你用C++踩过多少坑?编程业界大牛带你了解真正的C++

    地址:http://www.17bianji.com/lsqh/39366.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)