C++ 20发布后,这个老牌编程语言又“真香”了

共 2988字,需浏览 6分钟

 ·

2021-01-06 10:07

1979年,C++之父 Bjarne Stroustrup 在偶然的机会中发现:要想开发大型软件且它能够高效运行,需要一个具有灵活和可拓展类型系统的编程语言。在当时,Simula语言的类、类层次结构和强静态类型检查是组织代码和管理复杂性的主要手段,而BCPL(C语言的祖先)的跨平台移植性很好。于是,Bjarne Stroustrup 产生了把二者特性结合起来的想法,因此C++在贝尔实验室诞生了。


C++是一门集面向过程、面向对象、函数式、泛型和元编程等多种编程范式于一身的复杂编程语言。青出于蓝而胜于蓝,除了具有C语言的所有特性之外,C++还有包括类、基本继承、内联、默认函数参数和强类型检查等重要功能。


1998年,已经广泛应用于软件开发行业的C++终于发布了第一个国际标准ISO/IEC 14882:1998,从此C++在编程领域势如破竹,辉煌了30多年。 



桌面时代的王者


20世纪80年代,计算机行业和硬件密不可分,整个编程界几乎被C和C++占据。C++既有面向对象的优势,又有与C语言不相上下的效率,因此在很多高性能的系统级软件、图形图像软件、桌面应用中都有它的身影。

在当时,编程语言并不多,C++凭着运行效率高的优势与C语言一起成为服务端软件。但C++并不仅限于底层的开发,因为有面向对象的优势,C++在图形视觉领域也颇受欢迎。同时,随着操作系统的广泛应用,基于桌面级别的软件基本都是采用C/C++开发的。

后生可畏


到了20世纪90年代初,工业领域的开发进入成熟期,计算机行业进入了互联网的Web时代,C++在编程语言领域中的领土逐渐被其他新兴的语言侵占。

首先是电子商务和社交网站的兴起,让Java迅速成为编程界的新秀,直至今日依旧常居编程语言排行榜第一位。

看到Java发展势头迅猛,微软也不甘落后,开发的.NET开发出来后,背靠Windows系统而稳步发展。那个时候的计算机行业就像一方沃土,即便有C/C++和Java无比强悍的编程语言存在,占据着很大的市场份额,但是像PHP、C#等这样的新兴编程语言依旧可以在这个行业中找到一席之地。

Web时代要求更高的灵活性,C++没有跟上。而伴随着互联网和移动互联网的“春雨”,一系列优秀的编程语言春笋般不断涌现,诸如PHP、C#、Ruby、Python等编程语言也逐渐成为程序员们的首选语言。C语言和C++的市场份额被这些新秀语言逐步挤压。 

复兴之路


近年来,局势有所扭转。在大型游戏、工业机器人、智能装备等领域高速发展的时代,C++语言凭借着强大的设计能力和稳定的运行性能,在这些领域拥有了不可替代的优势。

从最近的编程语言排行榜来看,C++的排名正在不断提高,仅次于Java、C和Python。这个已经30多岁的老牌编程语言又将迎来新的转机。 

2020年9月份,C++20国际标准草案获得一致通过,ISO C++20新标准在翘首期待中终于尘埃落定。

C++之父 Bjarne Stroustrup 表示:“C++ 20是自C++11以来最大的发行版,它将是C++发展史上的里程碑。”业界都相信C++ 20必将为系统级软件的开发、构建、设计带来深远的影响。

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++在编程圈应用很广泛,但是真正能把其中的知识点讲得清晰透彻的老师实在是太少了,周围好多自学的同学以最终却放弃了。”


其实,不必为这些问题苦恼,异步社区《C++ Primer Plus (第6版)》学习实战训练营来了!来自上海交大和北师大的两位重量级老师亲自带队,带你深入学习C++!
▼▼▼
《C++ Primer Plus(第6版)》五天训练营
C++ Primer Plus 5天训练营
扫码入群免费学!

关于老师


翁慧玉:上海交通大学计算机系教授,上海交通大学“程序设计”“数据结构”等课程主讲教师,负责计算机系ACM试点班和电信学院大平台等程序设计课程,《程序设计》获得上海市精品课程,《数据结构》获得国家级精品课程。同时曾获高等教育国家级教学成果奖一等奖、高等教育国家级教学成果奖二等奖、高等教育上海市级教育成果一等奖等。

曹良亮:北京师范大学教育技术学院理学博士、高级工程师,长期从事北京师范大学本科生的C/C++语言与Java语言的教学工作,《C Primer Plus第六版中文版习题解答》作者。

你将收获


◆ 高效学习《C++ Primer Plus》方法
◆ 程序生成、VS2010开发环境实操
◆ C++语句、函数、重载
◆ 对象和类、对象构造、对象析构

五大服务


◆ 名师引导,学习事半功倍
◆ 课后作业,帮助巩固知识点
◆ 班主任全程督学,告别懒惰
◆ 直播互动+录播答疑 增强学习效果
◆ 学完价值35000+VIP电子书奖励

适合人群


1、《C++ Primer Plus (第6版)》或相近阶段C教材的读者

2、零基础,或只有较少的编程基础,需要系统学习C++语言者

3、有一定其他语言编程基础,需要转向C++语言者


报名须知


开营时间:2021年1月4日晚8点直播
扫码入群免费学!

课程大纲



图书推荐


C++ Primer Plus(第6版)中文版
作者: [美] 史蒂芬·普拉达(Stephen Prata)
译者: 张海龙 ,袁国忠


浏览 25
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐