年,C++之父BjarneStroustrup在偶然的机会中发现:要想开发大型软件且它能够高效运行,需要一个具有灵活和可拓展类型系统的编程语言。在当时,Simula语言的类、类层次结构和强静态类型检查是组织代码和管理复杂性的主要手段,而BCPL(C语言的祖先)的跨平台移植性很好。于是,BjarneStroustrup产生了把二者特性结合起来的想法,因此C++在贝尔实验室诞生了。
C++是一门集面向过程、面向对象、函数式、泛型和元编程等多种编程范式于一身的复杂编程语言。青出于蓝而胜于蓝,除了具有C语言的所有特性之外,C++还有包括类、基本继承、内联、默认函数参数和强类型检查等重要功能。
年,已经广泛应用于软件开发行业的C++终于发布了第一个国际标准ISO/IEC:,从此C++在编程领域势如破竹。
—01—
桌面时代的王者
20世纪80年代,计算机行业和硬件密不可分,整个编程界几乎被C和C++占据。C++既有面向对象的优势,又有与C语言不相上下的效率,因此在很多高性能的系统级软件、图形图像软件、桌面应用中都有它的身影。
在当时,编程语言并不多,C++凭着运行效率高的优势与C语言一起成为服务端软件。但C++并不仅限于底层的开发,因为有面向对象的优势,C++在图形视觉领域也颇受欢迎。同时,随着操作系统的广泛应用,基于桌面级别的软件基本都是采用C/C++开发的。
—02—
后生可畏
到了20世纪90年代初,工业领域的开发进入成熟期,计算机行业进入了互联网的Web时代,C++在编程语言领域中的领土逐渐被其他新兴的语言侵占。
首先是电子商务和社交网站的兴起,让Java迅速成为编程界的新秀,直至今日依旧常居编程语言排行榜第一位。
看到Java发展势头迅猛,微软也不甘落后,开发的.NET开发出来后,背靠Windows系统而稳步发展。那个时候的计算机行业就像一方沃土,即便有C/C++和Java无比强悍的编程语言存在,占据着很大的市场份额,但是像PHP、C#等这样的新兴编程语言依旧可以在这个行业中找到一席之地。
Web时代要求更高的灵活性,C++没有跟上。而伴随着互联网和移动互联网的“春雨”,一系列优秀的编程语言春笋般不断涌现,诸如PHP、C#、Ruby、Python等编程语言也逐渐成为程序员们的首选语言。C语言和C++的市场份额被这些新秀语言逐步挤压。
—03—
复兴之路
近年来,局势有所扭转。在大型游戏、工业机器人、智能装备等领域高速发展的时代,C++语言凭借着强大的设计能力和稳定的运行性能,在这些领域拥有了不可替代的优势。
从最近的编程语言排行榜来看,C++的排名正在不断提高,仅次于Java、C和Python。这个已经40多岁的老牌编程语言又将迎来新的转机。
年9月份,C++20国际标准草案获得一致通过,ISOC++20新标准在翘首期待中终于尘埃落定。
C++之父BjarneStroustrup表示:“C++20是自C++11以来最大的发行版,它将是C++发展史上的里程碑。”业界都相信C++20必将为系统级软件的开发、构建、设计带来深远的影响。
—04—
C++的学习之道
和C语言相比,C++继承了C语言所有的语法和库函数,同时为了提高语言的封装、继承和多态,C++引入了类的概念。
从应用角度来看,C++多用于开发各种后台使用的算法和逻辑库。而C语言则更底层,主要用于开发更核心的算法、驱动程序和控制程序等。
不过,C和C++的学习路径大体相同,可以简单分为五大类:算法和数据结构、面向对象思想、基本语言知识、产品开发、与其他语言混合开发。在这个分类之下还有一些更细致的内容,如图所示:
C/C++是更快、更底层的语言,要想高效使用C/C++语言,还需要掌握更多的算法和数据结构的知识,以及操作系统和多线程的知识。尤其是操作系统的知识,因为程序最终要运行在操作系统上。例如,如何读取一个文件的时间属性,如何读取键盘的特定键,如何建立一个目录等,这些都与程序运行的平台(操作系统)有紧密的关系。
对这些知识了解得越多,就越能编写出高效、简洁的C/C++语言程序。如果要编写一个大规模的程序,还需要具备设计模式的知识。
除此之外,大中型的程序一般都是混合利用多种语言来开发的。这样就可以充分发挥各种语言的优点。例如,为了得到更好的界面,一般都会采用C#和Java进行开发,而核心的算法和靠近硬件的部分则需要采用C/C++语言编写。
要想真正融会贯通,一定要知道一些C++与其他语言混合开发的知识,例如C++/CLI,或者是COM组件的知识。
C++的强大是众所周知的,但也是出了名的难学。能够给开发者极高自由度的编程语言,学习门槛往往也不低。因此,学习C++的过程是极为痛苦的,我们常听到还在入门阶段的朋友在苦恼:
看不懂:“C++的概念太难理解了,指针太容易搞混淆了。”
难坚持:“一开始学习的时候信心满满,学习计划列了一大堆,但是开始学习的时候却怎么也坚持不了了。”
没人教:“知道C++在编程圈应用很广泛,但是真正能把其中的知识点讲得清晰透彻的老师实在是太少了,周围好多自学的同学以最终却放弃了。”
必读好书
01
《C++PrimerPlus》
小异推荐:
没有任何编程基础,想学C++编程,怎么办?
别担心,就从这本畅销40多年,无数人选择的零基础自学C++入门图书开始!
这本书就是为初学者设计的,有无编程基础,都可以通过本书自学成才。不论你之前是什么学历,什么专业,什么背景,只要你跟着书本+视频,双管齐下,学习效果必定加倍,轻松入门不在话下!
毕竟不论是技术深度还是技术广度,以及针对自学用户设计的讲解方式,都在数个版本中得到了良好的验证。
而且,这本书的作者史蒂芬普拉达也是《CPrimerPlus》的作者,他也凭借《C++PrimerPlus》获得了计算机出版联合会年度How-to计算机图书奖提名。
小异看了这本书后,不由感慨,经典果然是经典,难怪有这么多人都推崇这本书。
02
《C++PrimerPlus(第6版)中文版习题解答》
小异推荐:
《C++PrimerPlus(第6版)中文版习题解答》是超级畅销书《C++PrimerPlus(第6版)中文版》的配套习题答案,针对书中的复习题和编程练习,给出了解题思路和答案。
《C++PrimerPlus(第6版)中文版习题解答》共分为18章,每一章的主题与《C++PrimerPlus(第6版)中文版》完全一致。每章开篇采用思维导图的方式列出本章的知识点,然后对每章的重点内容进行了梳理总结,最后则对每章中的复习题和编程练习进行了分析并给出了解答思路,确保读者在彻底夯实理论知识的同时,进一步提升实际编程能力。
作为《C++PrimerPlus(第6版)中文版》的配套参考书,《C++PrimerPlus(第6版)中文版习题解答》特别适合需要系统学习C++语言的初学者阅读,也适合打算巩固C++语言知识或者希望进一步提高编程技术的程序员阅读。
——
声明:转载此文是出于传递更多信息之目的。若有来源标注错误或侵犯了您的合法权益,请作者持权属证明与本网联系,我们将及时更正、删除,谢谢。邮箱