这一课先不写 Python,而是打好四块基础:计算机的组成、语言/代码/程序的区别、编程语言的发展历史,以及编译型和解释型语言。后面很多知识都建立在这些概念上。

1. 计算机的组成

一台计算机由硬件和软件两部分组成。

1.1 硬件

计算机硬件由五大部分组成:

部件 作用
运算器 负责算术运算(加减乘除)和逻辑运算(比较、判断真假)
控制器 计算机的"指挥中心",按程序的要求,协调其他部件按顺序工作
存储器 保存程序和数据,让计算机有"记忆"
输入设备 把信息送进计算机,比如键盘、鼠标、麦克风
输出设备 把结果展示出来,比如屏幕、音箱、打印机

其中,运算器和控制器合在一起,就是我们常说的 CPU(中央处理器)。

注意:CPU 只能理解和执行二进制(只用 0 和 1 表示信息)的机器指令。这一点后面会反复用到。

存储器里,最常听到的是内存和硬盘,它们的区别要记住:

打个比方:硬盘决定你的电脑能装下多少软件,内存决定你的电脑能同时开着多少软件还不卡。

1.2 软件

计算机软件分为两类:

类别 作用 例子
系统软件 直接管理硬件,负责分配内存、处理器等资源,并提供文件管理、设备控制、任务调度等基础服务,是其他软件运行的平台 Windows、macOS、Linux
应用软件 完成某个具体任务,满足用户的需求,运行时依赖系统软件 浏览器、Word、游戏

我们以后用 Python 写的程序,就属于应用软件。

2. 计算机语言、代码、程序

这三个词经常一起出现,但意思不同:

2.1 计算机语言

人和人交流要用语言,人和计算机"交流"、给它下达指令,也需要语言,这就是计算机语言。它和中文、法语一样,有自己严格的规则。

2.2 代码

代码是按照计算机语言的规则写出来的指令,说明要让计算机做什么。也就是说:语言是规则,代码是按照规则写下的一行行指令。

2.3 程序

把代码按一定的顺序和逻辑组织起来,能完成某个任务或功能,就是程序。如果把程序比作一道菜,那每一行代码就是做这道菜的一个步骤。

3. 计算机语言简史

3.1 第一代:机器语言

计算机刚出现的时候,人们只能用机器语言(也叫机器码)来操作它,也就是由 0 和 1 组成的二进制内容。当时输入和修改指令,要靠拨动开关、插拔连线,或者使用打孔的纸带。

机器语言能把硬件性能发挥到极致,但所有操作都要用 0 和 1 来写,编程过程非常繁琐,也很容易出错,对程序员的耐心要求极高。

比如,在常见的 x86 CPU 上,用机器码让计算机算 1 + 1,写出来是这样:

10110000 00000001 00000100 00000001

前 16 位的意思是"把 1 放进寄存器",后 16 位的意思是"再给它加 1"。光看这串数字,几乎不可能看出它在做什么。

3.2 第二代:汇编语言

为了解决机器语言难懂的问题,汇编语言出现了。它用好记的英文缩写(叫"助记符",比如 MOV、ADD)来代替一串串二进制指令。可以说,汇编语言就是机器语言的"人性化翻译",大大降低了编程的门槛,也为后来的高级语言打下了基础。

同样是算 1 + 1,用汇编语言写成:

mov al, 1
add al, 1

第一行把 1 放进名叫 al 的寄存器,第二行再加 1。是不是比上面那串 0 和 1 好懂多了?

注意:汇编语言写完后,仍然要翻译成机器码才能交给 CPU 执行,因为 CPU 只认识二进制指令。

3.3 第三代:高级语言

和机器语言、汇编语言相比,高级语言更接近人类的自然语言:可以用英文单词写程序,里面的符号和算式也和平时的数学写法差不多,而且不用操心大部分底层细节,所以更容易学会。常见的高级语言有 C、C++、Java、PHP、Go、Rust、JavaScript、Python 等。

比如,用 Python 在屏幕上显示 "Hello, world!",只要一行:

print("Hello, world!")

用 Java 做同样的事,要写成这样:

public class Main {
    public static void main(String[] args) {
        System.out.println("Hello, world!");
    }
}

对比一下就能感觉到,Python 写起来特别简洁,这也是它适合入门的原因之一。

注意:计算机同样不能直接执行高级语言,也要先把它转换成机器语言。

4. 编译型语言与解释型语言

高级语言转换成机器指令的方式不同,可以分成编译型和解释型两类。

4.1 编译型语言

运行之前,先把整个程序一次性翻译成计算机能直接执行的二进制内容,通常会生成一个可执行文件,比如 Windows 上的 .exe 文件。常见的编译型语言有 C、C++、Go、Rust 等。

4.2 解释型语言

运行时由解释器把程序一句一句地翻译成计算机能执行的指令,整个过程通常不生成可执行文件。常见的解释型语言有 Python、PHP、JavaScript 等。

4.3 二者对比

编译型语言 解释型语言
例子 C、C++、Go、Rust 等 Python、JavaScript、Ruby 等
执行过程 运行前把整个程序一次性翻译成机器码,生成可执行文件 运行时由解释器把代码一句一句翻译成机器码并执行
生成可执行文件 会,编译一次可以反复运行 不会,每次运行都要靠解释器翻译
运行速度 快 相对慢
跨平台 差,要针对不同平台分别编译 好,只要那个平台上有解释器就能运行
适合场景 系统底层、对性能要求高的场景 脚本、数据分析、AI 应用、Web 开发等

Python 是解释型语言,这正是它在数据分析和 AI 领域这么流行的原因之一:写完马上能运行,改起来方便,试错很快。

这一课你需要记住的

下一课: 初识 Python,了解它的来历和特点,并在你的电脑上把它装好。