C 之父的C 元宇宙
导读:C++之父BjarneStroustrup 创建了一个怎样的C++元宇宙?它给我们制定了一个怎样的事半功倍的C++学习路线图?
C++之父Bjarne Stroustrup 1979年秋发明了C++,他制定了最初的定义和设计标准,完成了第一个实现,设计了大多数语言特性和早期标准库里的很多内容。至今,C++已经走过了42个年头,很多人认为C++已经老朽,越来越不适用于大数据、人工智能和云原生为技术底座的大IT环境。
其实不然!C++不仅没有老,散发着成熟的魅力的同时,仍不乏青春的活力。
从设计标准(ISO C++)角度看,C++11已经非常成熟且被广泛使用;C++14和C++17的制定工作于2012年开始,进展非常顺利,C++14中新增的核心功能基本全部实现,C++17中规划的功能大部分也已经实现。
从语言特性角度看,既吸收了当下流行的函数式语言的一些好的语言特性(如泛型Lambda),也删除了原来的一些饱受诟病的语言特性(如三字符组)。当然,最大的变化是增加了大量实用且功能强大的语言特性,如二进制文本、元字符串、静态断言等。语言功能更加丰富、更加强大、更加高效。
从应用场景角度看,操作系统、数据库、网络软件、驱动程序、游戏、图形处理软件、搜索引擎等领域C++依然是主角,完全不可取代。在权威的TIOBE编程语言排行榜上,C++从未跌出过前4。
图1 TIOBE编程语言排行榜(2021年7月)
从图书市场的角度来看,编程语言类图书,Python、Java和C++牢牢占据着前3名。据不完全统计,仅仅是在中国,每年新开始学习C++的程序员不少于50万,而且有逐年增加的趋势。
C++难学,这几乎是一个共识!这是由它的设计机制和要解决的主要问题决定的。
相比Python、Java、Go、C等当下流行的编程语言,C++的学习门槛更高,而且进阶的难度也更大。当然,如果与Rust和WASM等新星相比,C++的学习难度可能并不算大。
既然学习C++有相当的难度,那么有没有好的学习方式和方法推荐呢?学习编程语言,好比拜师学艺,跟随语言之父这样的开山立派的宗师学习,自然事半功倍。所以,要学C++,就应该师从C++语言之父Bjarne Stroustrup。
Stroustrup是科学界明星人物,曾获《财富》杂志“美国12位最年轻的科学家”称号,以及BYTE杂志“近20年来计算机工业最具影响力的20人”称号。他的学术造诣也极高,是美国工程院院士、IEEE会士、ACM会士,曾获Sigma Xi(科学研究协会)的William Procter奖(首位获得此奖的计算机科学家)。他对教育行业的贡献也极大,曾担任德州农工大学首席教授,为剑桥大学、哥伦比亚大学、普林斯顿大学等知名学府教育事业做出重要贡献。他的几本著作被翻译成20多种编程语言,是剑桥大学、哥伦比亚大学、普林斯顿大学、德州农工大学、上海交通大学等全球大量知名学府的核心教材。
从制定C++语言标准、设计并实现C++语言特性,到撰写C++专著和论文,再到C++教学、布道和企业实践,Stroustrup在C++领域做了大量的工作并取得了丰硕的成果,为我们构建了一个丰富的C++元宇宙。要跟随Stroustrup学好C++,必须先了解他的C++元宇宙。
下面来开始我们的C++元宇宙之旅,看看它都有什么:
(1)C++语言
Stroustrup发明了C++语言,今天依然在创新;
(2)C++标准
Stroustrup制定了C++的设计标准,至今仍在前进;
(3)C++标准库
Stroustrup设计了早期标准库里的很多内容,至今仍在参与和帮助设计标准库;
(4)4部C++作品
Stroustrup撰写了4部经典的C++作品,畅销全球20余个国家和地区,影响了几代程序员,C++程序员奉为瑰宝。
(5)1020条C++编码最佳实践
Stroustrup从他的工程实践经验中总结出了1020条C++编码最佳实践(建议),字字珠玑,全部写在了他的著作《C++程序设计语言(第4版)》(The C++ Programming Language,4th)和《C++语言导学》(A Tour of C++)里。
(6)1182道习题和思考题
为了帮助C++的学习者更好地了解、使用C++并懂得它背后的设计思想和原理,Stroustrup精心设计了1182道习题和思考题,这些内容全部在他的著作《C++程序设计:原理与实践(第2版)》(Programming: Principles andPractice Using C++)里。
(7)大量C++ FAQ
Stroustrup对各种常见的C++问题进行了整理,他从语言设计者和工程实践者的角度给出了他的分析和答案。
(8)近百个采访
Stroustrup将全球多个国家对他的关于 C++DE 采访进行了系统整理,多达近100个,里面有大量关于他对C++的思考和经验总结。
(9)大量视频学习资料
Stroustrup将他演讲和谈论C++的视频进行了整理,留下了大量宝贵的C++视频学习资料。
(10)C++编译器
Stroustrup对已有的免费和付费的C++编译器进行了全面分析,并给出选型建议。
(11)有价值的链接
Stroustrup在C++的学习路线图上给出了大量进一步了解和学习C++的链接,将把你带向C++元宇宙更广阔的深处。
如果你想更具体的了解Stroustrup的C++元宇宙,入口在这里:
图2 C++元宇宙入口
要学好C++,一定要善于利用C++元宇宙!
Stroustrup的C++元宇宙为C++教学者和学习者提供了丰富的方法和素材,除C++标准外,最核心的就是他的4本享誉全球的著作。
(1)《C++程序设计语言(原书第4版)》
这本书从C++语言设计者的角度讲解了专业C++程序员需要的每个语言特性和标准库组件,并解析了它们的设计初衷、原理和制约因素,是数百万C++程序员学完后推崇备至的C++语言学习宝典。
豆瓣评分9.2!畅销全球40余年!
数百万程序员推崇之作!世界名校核心教材!
内容全面,探究原理,698条编程建议、1000余代码示例
(2)《C++程序设计:原理与实践(原书第2版)》
这本书专注于C++程序设计技术、实践和技巧,而非C++语言本身,是一本能让你学到基本的实用编程技术(包括支持这种技术的编程思想和语言工具)的最简单书籍,能帮助你理解并编写复杂的程序。它会教你编写“有用的程序”,而非“玩具程序”,帮助你实现从“工匠”(码农)到“艺术家”的升华。
豆瓣评分8.9!畅销全球20余国!
专注程序设计而非C++语言,教你编写“有用的程序”
1182道习题助你实现从“工匠”到“艺术家”的升华
(3)《C++语言导学(原书第2版)》
这本书是为有其他编程语言经验(如Java)快速了解C++量身定做的,它覆盖了C++大多数语言特性和标准库组件,但只是概览,能带你在3个小时内认识完整的C++及其背后的设计思想。写作手法、内容结构、示例选取都推陈出新,不枯燥,不教条;文字虽少,内容却丰富,直指关键。
豆瓣评分8.9!适合有一定编程基础的程序员阅读学习
322条编程建议,3小时带你认识完整的C++
路线图1:如果我没有编程经验,也没有C++语言基础,我该怎么学?
推荐你先系统学习《C++程序设计语言(原书第4版)》,然后深入学习《C++程序设计:原理与实践(原书第2版)》。
路线图2:如果我有C++语言基础,想写出工程级C++代码,我该怎么学?
推荐你先深入学习《C++程序设计:原理与实践(原书第2版)》,然后再系统学习《C++程序设计语言(原书第4版)》。
路线图3:如果我有其他语言编程经验,没有C++语言基础,我该怎么学?
建议你先快速学习《C++语言导学》,然后系统学习《C++程序设计语言(原书第4版)》,最后再深入学习《C++程序设计:原理与实践(原书第2版)》。
路线图4:如果我是教师,Stroustrup的书适合用来教学吗?
非常适合!剑桥大学、普林斯顿大学、上海交大等全球大量的名校都在用Stroustrup的书作为教材,取得了非常好的成效。为了帮助教师教学,Stroustrup还专门为教师编写了教学指南、配套PPT、习题等,所以他的书在C++课堂深受欢迎,是公认的C++教材的事实标准。
具体教学时,推荐《C++程序设计语言(原书第4版)》和《C++程序设计:原理与实践(原书第2版)》结合使用,前者讲透C++的语言特性和标准库以及它们的设计原理,帮助学生打下扎实的语言基础;后者深入地讲解了C++程序设计的技术和技巧,能引导学生在掌握语言后写出真正有用的程序。由于学校课时有限,建议以前者为主,后者为辅,对教师的授课能力有一定的考验。
无论你是什么水平层次,无论在处在哪个行业,要学习C++,C++之父Stroustrup的这3本书是最好的选择。当然,要成为一名合格甚至是优秀的C++程序员,只看书肯定是不够的。用Stroustrup的话来说:“学习程序设计最好的方法是实践,是编写有用的代码,而非玩具代码”。
最后,用Stroustrup的一句话来结束全文:“程序员应该是艺术家(Artist),而非匠人(Worker)——后者只会堆砌代码,而前者能创造出美好的作品。”希望本文能帮助你在成为匠人和艺术家的路上能少走弯路。