企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# 【知识精讲】你好,C++ ## Part1 我们已经知道,C 语言因为其具有很多优点,自 20 世纪 70 年代诞生以来,已经得到了广泛的应用,全世界有大量的 C 语言程序员,库代码和开发环境。然而尽管如此,C 语言毕竟是一种面向过程的语言,已经远远不足以满足运用面向对象方法,进行软件开发的需要了。因此,在 1980 年,AT&T 贝尔实验室的 Bjarne Stroustrup 博士便在 C 语言的基础上,发明了 C with Class 语言,最终演变成了现在的 C++ 语言。 C++ 语言的标准化工作从 1989 年开始,经过不断完善,在 1998 年被国际标准化组织(ISO)钦定为国际标准,并随着时间推移而更新——这门课程使用的是 C++ 11 标准。 ## Part2 如果我们把计算机科学比喻成武侠小说的世界的话,那么大规模的软件工程活动,就相当于是一整套武学体系——而 C++ 语言,则是这个体系中最为基本的拳脚招数。我们在学习编程语言的时候,经常会遇到这样的争论:究竟学习哪种编程语言更好呢?上文提到的 C++ 之父 Stroustrup 曾经说过这么一句话:世界上只有两种编程语言,一种是被人骂的,另一种是没人用的……显然,C++ 就是前一种语言。 尽管C++ 语言饱受非议,但必须承认,它仍然是计算机科学史上最为重要的语言之一——从它诞生以来,几乎每一个平台,每一个系统,都有大量的由 C++ 编写出的应用程序。凭借着优秀的面向对象特性,优秀的运行效率和良好的可移植性,C++ 语言直到今天仍然有着极其广泛的应用——后续发展的典型的面向对象语言,比如 JAVA 和 C# ,也深受 C++ 影响,在语法上跟 C++ 几乎如出一辙。 ![](https://res.jisuanke.com/img/upload/20160712/cd9e719e7aeb946bbc9c529a823a3da27a988c58.png) 图为著名的开源浏览器 FireFox,提供多个平台版本——很多著名的跨平台软件,比如 Google Chrome 和 Microsoft Office,其核心部分都是由 C++ 语言编写的,在不同平台之间可以共享大部分代码。 ## Part3 很多同学可能会觉得,听说 C++ 好像很难学的样子,我能学会它吗?事实上,C++ 确实很难——但也很简单。为什么这么说呢?因为 C++ 实际上是一个由多个部分组成的联邦——上文提到的 C++ 之父还曾经说过:“我特别讨厌语言的设计者把自己的喜好强加给用户。”,于是 C++ 就变成了现在的样子——同时包含多个范式,例如面向对象编程,函数式编程,模板,以及继承自纯 C 语言的面向过程编程等。 ## Part4 难能可贵的是,这几种看似没什么关联的范式,在 C++ 中混用依然十分的自然——不过想要同时掌握这些范式,自然也就变得极度困难了,所以才会有“ C++ 很难精通”这样的说法。然而,这实际上是一种典型的误解——因为你不需要刻意地去使用C++ 的各种特性,C++ 本身也并不强迫你必须掌握某些特性才能编写你的程序。 事实上,绝大多数人在学习和工作中,都不太可能同时用到以上的所有范式——所以,大家只要放轻松就好了,把C++ 当成一顿各取所需的自助餐,取得你所需要的部分就行了。跟随我们的课程深入学习,大家就会发现,C++ 其实并没有那么可怕…… ![](https://res.jisuanke.com/img/upload/20160712/fc683b51756d62bec696260b348c3a4b15a1e9dd.png) C++ 就像自助餐一样,各取所需即可——你不需要刻意地去使用那些复杂的特性,只要能完成你的工作就行。 ## Part5 通过对 C++ 进行学习,你将会在拥有熟练的编程能力的同时,掌握一系列基本的编程思想和方法——万变不离其宗,就算你在以后的工作中,不使用 C++ 而使用其他的语言,你在对 C++ 的学习中所获得的积累,依然可以让你在你的工作中,终身受用。 ## Part6 最后,给大家补充一些小八卦:2007 年的时候,Linux 之父 Linus Torvalds 曾经怒斥一名试图向 Git 贡献 C++ 代码的微软程序员,并炮轰 C++ 一无是处——一时间纯 C 派和 C++ 派之间发生了一系列热火朝天的撕逼大战。经常浏览某些程序员社区的同学也都知道,“PXX 是世界上最好的语言”之类的口水话题也经常引发大规模的争吵。 ![](https://res.jisuanke.com/img/upload/20160712/cef44b8f297914ff7e40725f19c8e8b52f73b29f.png) Linus 炮轰 C++原文(英文) 不过,对于各位初学 C++ 的同学来说,参与这种争吵显然是浪费生命的愚蠢行为——再好的语言也一样可以写出烂代码,作为初学者,现在大家需要做的是努力提高自己的编程能力和知识水平——至于具体哪种语言更好,显然不是我们现在应该考虑的问题。