介绍C和C++语言

在C++之前是C语言

C语言由贝尔电话实验室的Dennis Ritchie于1972年开发,主要用作系统编程语言(用于编写操作系统的语言)。Ritchie的主要目标是生成一种易于编译的简约语言,允许有效访问内存,生成高效代码,并且是独立的(不依赖于其他程序)。对于高级语言,它旨在为程序员提供大量控制,同时仍然鼓励平台(硬件和操作系统)独立(即,不必为每个平台重写代码)。

C最终变得如此高效和灵活,以至于1973年,Ritchie和Ken Thompson使用C重写了大部分UNIX操作系统。许多以前的操作系统都是用汇编语言编写的。与仅生成只能在特定CPU上运行的程序的程序集不同,C具有出色的可移植性,允许在许多不同类型的计算机上轻松地重新编译UNIX并加速其采用。C和Unix的命运联系在一起,而C的受欢迎程度部分与UNIX作为操作系统的成功有关。

1978年,Brian Kernighan和Dennis Ritchie出版了一本名为“The C Programming Language”的书。这本书通常被称为K&R(在作者的姓氏之后),提供了该语言的非正式规范,并成为事实上的标准。当需要最大的可移植性时,程序员会坚持K&R中的建议,因为当时大多数编译器都是按照K&R标准实现的。

1983年,美国国家标准协会(ANSI)成立了一个委员会来建立C的正式标准。在1989年(委员会啥都做呀~),他们完成并发布了C89标准,通常称为ANSI C. 1990年,国际标准化组织(ISO)采用ANSI C(稍作修改的版本)。这个版本的C被称为C90。编译器最终符合ANSI C / C90标准,并且希望最大可移植性的程序被编码为此标准。

1999年,ANSI委员会发布了一个名为C99的新版C语言。C99采用了许多功能,这些功能已经作为扩展进入编译器,或者已经在C++中实现。

C++

C++(发音为see plus plus)由Bjarne Stroustrup在贝尔实验室开发,作为C的扩展,从1979年开始。C++为C语言添加了许多新功能,也许最好被认为是C的超集,尽管这是并非完全正确(因为C99引入了一些C++中不存在的功能)。C++声名鹊起的主要原因在于它是一种面向对象的语言。至于对象是什么以及它与传统编程方法的区别,我们将在第8章(面向对象编程基础)中介绍它。

C++于1998年由ISO委员会批准,并于2003年再次批准(称为C++ 03)。自那时起,C++语言(C++ 11,C++ 14和C++ 17,在2011年,2014年和2017年得到批准)的三个主要更新已经完成,为该语言添加了额外的功能。特别是C++ 11为该语言添加了大量新功能。这些更新中的一些相关功能将在这些教程中讨论。该语言的未来更新正在积极考虑之中。

C和C++的哲学

C和C++的基本设计理念可以概括为“信任程序员” - 既美妙又危险。C++旨在让程序员可以高度自由地完成他们想要的任务。然而,这也意味着语言通常不会阻止你做一些没有意义的事情,因为它会假设你因为某些原因而无法理解。如果没有意识到,新程序员可能会陷入相当多的陷阱。这是“知道如何正确使用C++和不该怎么用C++编程两者同等重要”的原因之一。

问:C++擅长什么?

C++在需要高性能和精确控制内存和其他资源的情况下表现出色。以下是一些常见的应用程序类型,最有可能用C++编写:

  • 视频游戏
  • 实时系统(例如运输,制造等……)
  • 高性能金融应用(例如高频交易)
  • 图形应用程序和模拟
  • 生产力/办公应用
  • 嵌入式软件
  • 音视频处理

问:在进行这些教程之前,我是否需要了解C?

不需要!从C++开始是完美的,我们会教你一路上需要知道的一切(包括要避免的坑)。

一旦你了解了C++,如果你有需要,学习标准C应该很容易。目前,C主要用于小众用例:在嵌入式设备上运行代码,以及与只支持C的代码打交道的时候……大多数情况下,建议使用C++。