2019年,我们为什么要学C+编程?

学习C++的一大好处在于,它可以帮助我们理解生命周期(Lifetime)和所有权(Ownership)的概念,以及类型的抽象,还可了解到怎样利用类型保持API的使用方式不变。除此之外,为何各种高级语言层出的今天,学习C++仍颇有价值?本文将为你道来。

“C++已死”

很久以前,我就听过这样的说法。那时候至少在美国,Java已经成了各公司的主流语言。程序员也许都很熟悉,Joel Spolsky在2005年12月对JavaSchools发起的批驳。此外,作为微软应对Java的手段,2000年左右推出的C#也有C++杀手的称号。这之后,动态语言风靡一时,Ruby和Python开始流行起来。那么,既然有了这些好用的语言,我们为什么还要选择C++语言呢?它难道不是C语言进阶版吗,就像当初的汇编语言进阶版一样?如果有时间,建议大家听一下Herb Sutter的演讲,讲得很好;时间有限的话也可以只看这个较短的视频演讲,其中包含有具体案例。从TIOBE语言排行榜中我们可以发现,在过去很长的一段时间里,C++一直稳居最受欢迎语言列表的第三名。对一个老牌语言来说,这个成绩不算差了。这让我想到了另一个问题……

大家怎么看待指针?

大多立即将C++与指针关联起来的人都学错了。“带类的C语言”已经是老一套了。根据我个人经验,它糟糕透了。在C语言中,将多维数组作为函数参数传送、执行指针运算、以手动方式管理内存(就好像没有容器与智能指针一样)、实现双向链表等等,所有这些都是我们应当在C语言的课程上学过的。也许通过这种方式来学习C++并没有什么错?好吧,再想想。想学习c语言c++编程的加群:941,636,044,群里面是有一些资料可以下载帮助大家的。

当然,专业的程序员应当理解指针的工作方式,但它已经不是现代C++的主旨了。C++一直持续不断地发展,昨天正确的代码,到了今天可能就成了糟糕的编程风格。

该语言正在经历大浪淘沙的过程,套用Bjarne Stroustrup博士的一句话,“C++就像一种新语言,各部分组合较之前更为顺畅。其更高层次的编程风格较之前更为自然,也一如既往的高效。”现在,C++有了Lambda表达式、内存模型(Memory Model)、Range-based for loops、移动语义(Move Semantics)、可变参数模板(Variadic Template)以及所有其他类似的高级功能,这些都能协助我们完成手上的工作。你是否也有一些旧代码需要按新标准来更新呢? 不要担心,Clang-tidy就是你的救星!这个工具非常酷,可以通过静态分析找出老式风格代码,并给出修改建议。在使用C++时,工具的缺乏一直很令人头疼,不过这种情况正在改变。你以为只有Java才有自动重构功能?谷歌的Chandler Carruth在演讲中提到了使用Ninja编译LLVM/clang的问题,现在它们都能运用自动重构,立即生成1亿行的C++代码了。

最后,我相信,C++依然能够在众多语言中脱颖而出,也相信会有更多的人喜欢上C++的!有兴趣一起学习交流c/c++编程的可以一起来哦!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190125A0GS9600?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券