C 语言简介
C 语言是一种强大的专业化编程语言,也是我学习的第一门编程语言,本文将为你介绍 C 语言的基本情况、发展历程、基本特性以及应用领域。阅读完本文,你将对 C 语言有一个大致的认识。
C 语言是什么
C 语言是一种通用的、面向过程的计算机编程语言,支持结构化编程、词法作用域和递归,使用静态类型系统。
简单来说,C 语言是一门静态类型、编译型的编程语言,既有高级语言又有低级语言(汇编语言)的特点,具有语法简洁、高效、灵活、可移植等优点。
C 语言诞生于20世纪70年代初,是一门古老但依然广泛使用的编程语言,对后来的编程语言发展也产生了深远影响,许多解释性语言(如 Python)的解析器就是由 C 语言实现的。作为一门通用的高级编程语言,C 语言在计算机科学领域扮演着重要的角色。无论是嵌入式系统、操作系统、网络编程还是游戏开发,C 语言都发挥着重要的作用。
C 语言的起源
1969年,美国贝尔实验室的肯·汤普森(Ken Thompson)与丹尼斯·里奇(Dennis Ritchie)一起开发了 Unix 操作系统。Unix 是用汇编语言写的,无法移植到其他计算机,他们决定使用高级语言重写。但是,当时的高级语言无法满足他们的要求,于是汤普森就在 BCPL 语言的基础上发明了 B 语言。
但由于 B 语言过于简单,功能有限。因此在1972年,丹尼斯·里奇和布莱恩·柯林汉(Brian Kernighan)在 B 语言的基础上重新设计了一种新语言 —— C 语言(取 BCPL 的第二个字母)。C 语言既保持 了 BCPL 和 B 语言语法精练、接近硬件的优点,同时又克服了它们过于简单、数据无类型等缺点,因此顺理成章地取代了 B 语言。
Unix 之父 Ken Thompson 和 C 语言之父 Dennis Ritchie(via)
到1973年,整个 Unix 系统都使用 C 语言进行重写。此后,C 语言开始快速流传,广泛用于各种操作系统和系统软件的开发,并逐渐发展成为目前世界上最常用的编程语言之一。
1988年,美国国家标准协会(ANSI)正式将 C 语言标准化,标志着 C 语言开始稳定和规范化。1990年,国际标准化组织(ISO)通过了这个标准,也就是后来我们熟知的“ANSI C”,按照发布年份又称为“C89 或 C90”。
C 语言的发明,是计算机科学发展史上的一个伟大的创举,直接影响了后来的 IT 技术革命和互联网技术革命。时至今日,绝大多数的底层软件,包括操作系统(如 Windows、Linux、UNIX 等),数据库软件(如 MySQL),办公软件(如 OpenOffice),杀毒软件,网络通信协议,包括 Python、Java 等语言的实现,互联网,以及各种内核驱动等都是用 C 语言开发的。C 语言作为编程语言之王,是当之无愧的。
在 2020 年 5 月 TIOBE 编程语言排行榜中,C 语言甚至还成功超越了 Java,时隔五年重返第一的王者宝座!
C 语言的优缺点
C 语言的三大优点 —— 效率、可移植性和稳定性。
-
效率
在这里,效率可能是指一些非常不一样的东西:能量和内存效率(适用于小型或便携式设备、卫星),运行时效率(适用于中型或大型计算密集型计算)或速度(适用于科学可视化、游戏或网络通信 )。C 在这些领域的效率是无与伦比的,其他编程语言倾向于引入大量的内存间接、动态行为,从而遏制了效率。
-
可移植性
C 语言的抽象状态机旨在可移植到任何计算设备上。这个概念带来了很大的好处:通常为新 CPU 开发的第一批软件组件就是 C 编译器。因此,用 C 编写的代码,特别是操作系统和其 他系统软件,可以进行快速的移植。大量的软件项目从中受益,Linux 发行版是数千个软件包的集合,这些软件包可以很容易地移植到新架构上,并与现有主流平台的发展保持同步。
-
稳定性
C 语言委员会致力于保证用户代码库的稳定性。你现在编写的 C 代码仍然可以在 20 年后仍然可以编译和运行。80 年代或 90 年代写的代码今天仍然可以使用。此外,C 还提供了一系列有限的特性,这些特性在工程学院的研究生阶段就应该掌握。因此,在数年甚至数十年后仍然可以保持可维护性。在 C 语言中,“遗留”有着不同的含义,好的 C 代码是真正的资产,而不是负担。
当然,C 语言确实也有一些缺点,而且这些缺点和优点往往是同一特征相对的两个方面。例如 C 指针的使用,非常高效和灵活,但同时也很容易出现 Bug。另外,C 程序设计通常采用自顶向下的模块化、结构化编程,并没有从语法层面支持面向对象编程,这也是大型应用程序不使用 C 的主要原因(但一点也不妨碍 C 语言中使用面向对象编程思想,这一点后续再详细介绍)。
总而言之,C 是一门非常自由、灵活的语言,正如一位计算机专家曾经指出的 —— 自由的代价是永远的警惕。
C 语言应用领域
前面提到,C 最大的优点是效率、可移植性和稳定性。因此,只要这些是软件开发当中存在的主要问题,那么 C 就应该被视为首选语言。
具体来说,目前 C 语言主要应用领域包括:
- 嵌入式开发:C语言具有高级语言的特点,又具有汇编语言的特点,是最接近硬件的高级编程语言,因此在嵌入式领域是绝对的首选。
- 操作系统:包括 Linux 内核以及各类 RTOS,绝大多数操作系统都采用 C 语言编程。
- 数据库:MySQL、Redis、TDengine 等数据库核心采用 C 语言编程。
- 解析器:JVM 虚拟机、Python 解析器、Lua 解析器等都是采用 C 语言编程实现。
- 绘图处理:C 语言具有绘图能力强,可移植性,并具备很强的数据处理能力,OpenGL 就是使用 C 语言实现的。
- 关键算法:C 语言具有极高的运行效率,许多软件的关键算法也会使用 C 语言编程进行优化。
为什么要学 C 语言
C 语言诞生至今已经超过 50 年,至今依然是最重要和最流行的编程语言之一。它之所以得到发展,是因为人们尝试使用它后都喜欢它。
虽然有许多人从 C 转而使用更强大的 C++,但 C 有其自身的优势,例如更简洁的语法、更高的运行效率,以及优秀的可移植性和稳定性。这使得 C 语言仍然是嵌入式领域和基础软件领域最重要的编程语言,而且学习 C 也是通往 C++ 的必由之路。
Hello World
下面是一个简单的 C 语言 Hello World 程序:
#include <stdio.h>
int main(void)
{
printf("Hello, World!\n");
return 0;
}