如何学好 Modern C++?

痴心易碎 提交于 2021-02-11 07:11:04

在开发人员的圈子里面,通常有这样一句调侃的话:其他编程语言的开发者都是需要仰着头看 C++ 开发者的。

C++,在大多数开发人员的眼里,是一种非常难懂难学且容易出错的语言,但是一旦学成,其妙无穷,如侠士行走江湖,内功心法在身,无往不胜。

作为一门多范式的通用编程语言,既支持传统的面向对象编程,也支持模板元编程模式。在现代计算机信息领域,它是大多数上层技术的基础和支撑。

当然,除了作为基础技术支撑以外,在小到嵌入式、PC软件开发、游戏服务器,大到大型金融系统、高性能高并发计算应用、分布式服务器,到处都有 C++ 的身影,即使在现在火热的人工智能和机器学习,外衣是 Python(模型描述),其内核仍然还是 C++(高性能运算) 。

此外,中国几乎所有大学计算机专业都会开设 C/C++ 课程,那些注重对学生基础能力培养的院校会建议把 C/C++ 作为学生初入编程的第一门语言,为什么 C++ 会受到这么大的关注呢?我总结了 3 点它的核心竞争力:

1.性能:虽然完成同样的功能,C++ 需要的代码行数可能比其他语言要多一些,但性能方面比其他语言一般要快,这点在大型应用系统上差别更大。

2.计算机资源利用率:不管是移动设备,还是服务器,由于 C++ 语言更接近操作系统,大大减少了中间层的消耗,因此硬件资源利用率更多的应用于我们的应用本身。

3.对原理性的理解:C++ 这门语言本身要使用各种操作系统 API 构建应用,对开发者的要求比较高,需要开发者深入理解操作系统的原理等等,而这些原理不随着开发者改变开发语言、平台变化而变化,可以说一经学成,终身受用。

然而,C++ 也是出了名的复杂、难学、难用。 当然,这也不完全是一件坏事,这样一来,熟练的 C++ 程序员也就自然而然获得了“水平很高,薪资很高”的名声
C++ 之所以难学主要原因是, C++ 是离操作系统较近的编程语言,其语言本身自带的“功能完备性”不够,大多数功能必须是直接调用操作系统的 API 才能完成,而操作系统自身的保护机制会让非法的程序崩掉退出,这就要求了用好 C++ 必须对相关的操作系统原理(如多线程、网络编程等)有深入的理解。
读者一定听说过,C++ 程序可以直接操作内存,稍有不当,程序就会崩溃。 再例如,对于磁盘上文件的操作,C++ 需要调用操作系统的文件相关 API,而像 Java、Python 等其他语言,其自带语言的 sdk 往往直接封装了这样的功能。 不过,这些语言其实也是直接或间接对操作系统文件相关 API 的封装。 从这一点来说,同样的功能,C++ 程序有更高的效率。
再者,C++ 不仅支持面向对象编程模式也支持模板元编程,这就导致 C++ 编程的开发模式千差万别。
在硬件条件越来越不是主要问题的今天,C++ 标准委员会也意识到 C++ 语言“功能完备性”的问题,于是新的 C++11/14/17 标准,大量借鉴其他语言功能和特性上,除了移除了一些无用的特性,更是增加了大量方便易用的特性,大幅度提高了 C++ 开发者的开发效率。 以至于被称之为 “Modern C++”。
但是新的语言标准一经发布,让很多开发者觉得不适应,因为新语言标准似乎让 C++ 变成了另外一门编程语言。 新规范语法、右值引用、智能指针、新的线程库、线程同步原语、结构化绑定、stl容器的增强等等,让 C++ 这门已经有 40 岁的语言重新焕发光彩。
然而,实际开发中,很多开发者和开发团队对这些新功能望而生畏。 难理解和以为学习成本非常高,是常见的误解。
今天给读者介绍的课程将帮助读者消除这些误解,让我们欢迎吴咏炜老师以及他的专栏《现代 C++ 实战30讲》。

  扫面上图二维码,免费试看👆
输入立减5元优惠口令CPLUSPLUS
到手价¥63
 
吴咏炜老师何许人也?
吴咏炜老师是深耕 C++ 30 年的老程序员,前 Intel 资深软件架构师,见证了 C++ 这么多年来的发展历程。
他 1995 年毕业于复旦大学,从事软件开发工作 20 多年,历任开发工程师、项目经理、开发经理、架构师等 职务。 他热爱软件技术,热爱 C++,热爱开源; 对于精炼、易于维护的代码追求不懈,是《编程大师访谈录》一书的翻译者之一,开源项目 libunibreak 的作者。

学习本专栏需要什么基础?

本专栏分为以下四大部分: 

基础篇,讲解现代 C++ 中的最重要特性,帮助你理解基础概念;

提高篇,讲述几个独立的专题,帮助你掌握 C++ 中的一些高级技巧;

实战篇,则讨论实际的工具和第三方库,帮助你打磨手头的兵器库;

未来篇,讨论 C++20 中即将引入的一些新特性,帮助你培养前瞻性。

 

希望大家留意的是,学习本专栏需要满足下面这些条件:

1. 适宜人群:具有 1~5 年工作经验的 C++ 程序员,熟悉基本编程概念和 C++ 的基本语法,包括指针、引用、异常、递归、class 等(不要求熟悉 C++11),有意愿了解更深入的 C++ 知识。

2. 不适宜人群:完全没学过 C++ 的人(本专栏非 0 基础课程)。

3. 专栏中的内容大部分时间都会使用不超过 C++17 标准的语言特性,最后在讲到 C++20 新特性时,某些实验功能可能会要求某个特定的编译器,更多细节请参见[课前必读]。

4. 由于专栏涉及到的都是较短的代码,故作者不会提供工程文件,建议你熟悉编译器的命令行,来快速编译代码。 

特别说明:专栏中案例+代码偏多,不建议仅通过音频学习,“文稿+音频+动手实践”为最佳学习方式。一些语法和规则细节,部分也会在文末提供参考资料。


学完本专栏,你将收获什么?
在这个这个专栏中,他会重点讲 Modern C++ 的新特性是什么和为什么,而不是单纯的语法细节,让学习者知道某项技术产生的原因和实际应用场景,做到知其然和知其所以然。 以下是这个课程的大纲,全课程分为四大篇:
基础篇  讲解现代 C++ 中的最重要特性,帮助你理解基础概念;
提高篇  讲述几个独立的专题,帮助你掌握 C++ 中的一些高级技巧;
实战篇  讨论实际的工具和第三方库,帮助你打磨手头的兵器库;
未来篇  讨论 C++20 中即将引入的一些新特性,帮助你培养前瞻性。
学习本专栏,你会有下面四个方面的收获:
1. 掌握 C++ 语言现代特性
2. 领会 C++ 抽象表达精髓
3. 实践 C++ 开发惯用模式
4. 征服复杂性、解决实际问题
如果读者在学习了本专栏之后,能够知道某个 C++ 的功能为什么存在和应该在什么情况下使用,能把 C++ 当作一种实用的语言,能用它写出抽象但自然的代码,能对现代 C++这一熟悉而又陌生的语言有一个新的理解,能用它去更好地解决项目中的实际问题。
下面是本专栏的目录,可以一览你将会学到的内容:


我始终相信,静下心来好好学习 C++,会让你受益终生,也会让你的编程之路走得更远。
现在订阅,有什么优惠?
1、早鸟价 ¥68,原价 ¥99。结算时,输入优惠口令「CPLUSPLUS」再减 5 元,到手价 ¥63,口令仅限「前 200 人」有效。
 
2、订阅后生成海报分享给朋友,每成功邀请一位好友,可获得 ¥24 返现,多邀多得,上不封顶。


扫面上图二维码,免费试看👆

点击【阅读原文】免费试读, 输入优惠口令 CPLUSPLUS 再减 5 元,到手价  ¥63, 口令仅限 「前 200 人」 有效。

本文分享自微信公众号 - 高性能服务器开发(easyserverdev)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!