目录
1 认识程序
程序是为了让计算机执行特定的操作或解决某个问题而编写的一系列有序指令的集合。
2 计算机语言简史
2.1 机器语言
1946 年 2 月14 日,世界上第一台计算机 ENIAC 诞生,使用的是最原始的穿孔卡片。这种卡片上使用的是用二进制代码表示的语言,与人类语言差别极大,这种语言就称为机器语言。
下面是一段典型的机器码示例:
- 0000,0000,000000010000 代表 LOAD A, 16
- 0000,0001,000000000001 代表 LOAD B, 1
- 0001,0001,000000010000 代表 STORE B, 16
下图是 “程序媛” 正在使用机器语言编程:
2.2 汇编语言
汇编语言使用英文缩写的助记符来表示基本的操作,这些助记符构成了汇编语言的基础,比如:LOAD、MOVE 等,使人更容易使用,因此,汇编语言也称为符号语言。
优点:汇编语言因其紧密接近硬件的特性,能够编写出高效率的程序。
缺点:汇编语言是面向机器的,不同计算机会有不同的汇编语言,程序不易移植。
目前仍然应用于工业电子编程领域、软件的加密解密、计算机病毒分析等。
2.3 高级语言
高级语言,是一种接近于人类使用习惯的程序设计语言,它允许程序员使用接近日常英语的指令来编写程序,程序中的符号和算式也与日常用的数学算式差不多,接近于自然语言和数学语言,容易为人们掌握。
高级语言独立于计算机硬件,有一定的通用性。
计算机不能直接识别和执行用高级语言编写的程序,需要使用编译器或者解释器,转换为机器语言才能被识别和执行。
常见的高级语言有 C、C++、C#、Java、JavaScript、Python 、SQL、PHP 、Go 等。
3 为什么学习 C 语言
3.1 C 语言的优点
跨平台:C 语言编写的程序可以在多种不同的操作系统和硬件平台上运行,这使得 C 语言具有高度的可移植性。程序员只需要编写一次代码,就可以通过适当的编译和配置,在多个平台上运行同一个程序。
应用广泛:C 语言在多个领域都有广泛的应用,包括系统软件、嵌入式系统、驱动程序、游戏开发、网络编程等。其广泛的应用范围证明了 C 语言在多种场景下的有效性和可靠性。
系统设计开发:C 语言支持直接访问物理内存和进行底层硬件操作,这使得它在系统设计开发领域具有独特的优势。程序员可以使用 C 语言来设计和实现复杂的系统架构,包括操作系统、数据库管理系统等。
高效性能:C 语言是一种编译型语言,其代码可以直接转换为机器语言执行,从而提供高效的性能。这对于需要处理大量数据和执行复杂计算的程序来说尤为重要。
提高抽象思维:学习 C 语言可以帮助程序员提高抽象思维能力,通过掌握变量、函数、指针等概念,理解程序的结构和逻辑。这种抽象思维能力对于编写任何编程语言的程序都是非常重要的。
许多编程语言参照 C 语言:C 语言对许多现代编程语言产生了深远影响,许多编程语言(如 C++、Java、C# 等)都在一定程度上参照了 C 语言的设计。学习 C 语言有助于更好地理解这些语言,并在需要时与它们进行交互。
生态系统丰富:C 语言拥有庞大的标准库和第三方库,这些库提供了丰富的函数和数据结构,可以帮助程序员更轻松地实现各种功能。同时,C 语言的社区也非常活跃,有大量的教程、文档和示例代码可供学习参考。
帮助理解底层知识:通过学习 C 语言,程序员可以深入理解计算机的工作原理和底层知识,如内存管理、进程线程管理等。这些知识对于成为一名优秀的程序员至关重要,也是掌握其他高级编程语言的基础。
3.2 编程语言排名
C 语言是最流行的编程语言之一,下图是 2024 年 8 月份编程语言 TIOBE 指数排行榜,排名网站:https://www.tiobe.com/tiobe-index/
4 C 语言的发展历程
C 语言的发展可以追溯到 20 世纪 60 年代末至 70 年代初,这个时期是计算机编程语言发展的关键时期。
1969年:肯·汤普森(Ken Thompson)设计了 B 语言。B 语言是 C 语言的前身,它为 C 语言的开发奠定了基础。
1972年:丹尼斯·里奇(Dennis Ritchie)基于 B 语言设计了 new B 语言。new B 语言是 C 语言的早期版本,它在 B 语言的基础上进行了改进和扩展。
1973年:丹尼斯·里奇对 new B 语言进一步改进,C 语言诞生。C 语言在 new B 语言的基础上增加了新的特性和功能,成为了一种更加强大和灵活的编程语言。
1978年:贝尔实验室正式发布第一版 C 语言编译器。这个版本的 C 语言编译器使得 C 语言可以被更广泛地使用和推广。
1979年:C 语言的最重要版本 K&R C(也称为 C77)发布。K&R C 是由布赖恩·克尼汉(Brian Kernighan)和丹尼斯·里奇合(Dennis Ritchie)著的《C 程序设计语言》一书中描述的 C 语言版本,它成为了 C 语言的标准版本。
1989年:美国国家标准学会(ANSI)发布了首个 C 语言标准,即 ANSI C。这个标准对 C 语言进行了规范和标准化,使得 C 语言的使用更加统一和规范。
扩展:
丹尼斯·里奇被称之为 C 语言之父。
5 C 语言的发行版本
K&R C(C77,1978 年):由布赖恩·克尼汉和丹尼斯·里奇合写的《C 程序设计语言》成为公认标准,简称为 K&R C。
ANSI C(C89/C90,1989 年):第一个 ISO 标准,也叫 ANSI C,规范了 K&R C,确保了可移植性。
C99(1999 年):第一次大修订,引入许多特性如 // 注释、可变长度数组等,成为最流行版本。
C11(2011 年):再次修订,增加 _Generic、static_assert 等功能,跟进新技术。
C17(2018 年):C11 在 2017 年修补,2018 年发布的 C17 只解决了 C11 的缺陷,未加入新功能。
C23(预计 2023 年):预计 2023 年发布的 C23 计划增强安全性、消除实现定义行为、引入模块化语言等,提升安全和可靠性。
6 C 语言的应用场景
操作系统开发:C 语言被广泛用于操作系统内核的开发,如 Linux、Windows 和 macOS 等。由于 C 语言的高效性和对硬件的直接访问能力,它非常适合用于操作系统级别的编程。
嵌入式开发:在嵌入式系统中,C 语言是首选的编程语言。它允许开发者直接控制硬件,编写高效且紧凑的代码,适用于资源受限的设备。
驱动程序开发:C 语言常用于编写设备驱动程序,这些驱动程序是操作系统和硬件设备之间的接口,C 语言的低级特性使得它非常适合这个任务。
其他编程语言的编译器:许多现代编程语言的编译器和解释器都是用 C 语言编写的,如 Python、Java 等。C 语言的灵活性和强大的编译能力使得它成为编译器开发的首选。
网络编程:C 语言提供了对网络编程的直接支持,包括 socket 编程等,因此在开发网络应用和服务器软件时非常常用。
数据库开发:C 语言被用于开发许多数据库管理系统,如 MySQL、PostgreSQL 等。C 语言的高效性和对底层硬件的控制能力使得它在数据库开发中非常有用。
游戏开发:虽然现代游戏开发更多地使用 C++ 和 C# 等语言,但 C 语言在游戏引擎的底层实现中仍然扮演着重要角色。
人工智能开发:虽然 Python 在人工智能和机器学习领域非常流行,但 C 语言在一些需要高性能计算的场景中仍然被使用,如深度学习库的底层实现。
科学应用:C 语言在科学计算和工程应用中广泛使用,特别是在需要高性能计算的领域,如数值模拟、图像处理等。
金融应用:在金融领域,C 语言被用于开发高性能的交易系统和风险管理软件,尤其是在需要快速执行和低延迟的场景中。
航空航天:C 语言在航空航天领域也有应用,特别是在嵌入式系统和控制系统的开发中,这些系统需要高度可靠和实时的性能。