注:学习资料来源<尚硅谷>
视频:点击跳转
代码仓库:pythonStudy
1. 计算机组成
1.1 硬件
计算机硬件主要由五个核心部分组成:运算器、控制器、存储器、输入设备、输出设备。这些部件通过总线(Bus)连接在一起,形成完整的硬件系统。
📋 备注:『运算器』和『控制器』共同构成了中央处理器(CPU)。
📢 注意:计算机的 CPU 只能理解并执行由 0 和 1 组成的二进制机器指令。
🔌 总线(Bus)—— 数据的“高速公路”
总线是连接计算机各部件的一组公共通信线,负责在 CPU、内存、硬盘、输入输出设备之间传输数据和控制信号。根据功能不同,总线通常分为三类:
数据总线:传输实际的数据。
地址总线:传输数据存放的内存地址。
控制总线:传输控制信号(如读、写命令)。
💾 内存 VS 硬盘 —— 详细对比
通俗理解:能安装多少个游戏,取决于硬盘的大小;能同时流畅运行几个游戏,取决于内存的大小。

五大硬件详解
运算器(ALU —— Arithmetic Logic Unit)
专门负责执行各种算术运算(加减乘除、取模)和逻辑运算(与、或、非、异或)。现代 CPU 的运算器往往包含多个 ALU 单元,可同时进行并行计算,大幅提升效率。控制器(CU —— Control Unit)
计算机的指挥中枢。它负责从内存中取出指令、解析指令(译码),然后发出相应的控制信号来指挥其他部件协同工作。控制器内部包含:程序计数器(PC):存放下一条指令的内存地址。
指令寄存器(IR):存放当前正在执行的指令。
指令译码器:将机器指令翻译成控制信号。
存储器(Memory & Storage)
存储器体系通常采用金字塔结构,从上到下依次为:寄存器(在 CPU 内部,速度最快,容量极小)
高速缓存(Cache,位于 CPU 与内存之间,分 L1/L2/L3 三级)
内存(RAM,即主存)
外存(硬盘、U 盘等)
这样的分层设计平衡了速度与容量的矛盾。
输入设备
常见的输入设备包括:键盘、鼠标、触摸板、麦克风、摄像头、扫描仪、手写板、游戏手柄等。它们是用户向计算机发送指令和数据的媒介。输出设备
常见的输出设备包括:显示器、打印机、音箱、耳机、投影仪等。它们将计算机处理的结果以人类可感知的形式呈现出来。
1.2 软件
计算机软件主要分为两类:系统软件 与 应用软件。此外,还有一类特殊的软件——固件(Firmware)。

🖥️ 系统软件(System Software)
定义:直接管理和控制计算机硬件,为应用软件提供运行平台的软件。
主要职责:
操作系统(OS):如 Windows、macOS、Linux、Android、iOS。负责进程管理、内存管理、文件系统管理、设备驱动管理、用户界面等。
驱动程序:充当操作系统与具体硬件设备之间的“翻译官”,使系统能够正确识别和使用硬件。
实用工具:如磁盘碎片整理、杀毒软件、系统备份工具等。
📱 应用软件(Application Software)
定义:为执行特定任务、满足用户具体需求而开发的软件。
分类举例:
办公软件:Microsoft Office、WPS、Google Docs。
浏览器:Chrome、Edge、Firefox。
开发工具:Visual Studio Code、PyCharm、IntelliJ IDEA。
娱乐软件:游戏、媒体播放器。
🔧 固件(Firmware)—— 软件与硬件的“桥梁”
固件是一类存储在只读存储器(ROM)或闪存中的特殊程序,它负责硬件设备最底层的控制。例如:
BIOS / UEFI:计算机启动时最先运行的程序,负责硬件自检和引导操作系统。
路由器固件、打印机固件。
2. 计算机语言、代码、程序

2.1 计算机语言
计算机语言是人类与计算机进行交互和指令传达的形式化语言。如同人与人之间通过人类语言交流,人与计算机之间则需要通过计算机语言沟通。
2.2 代码
代码是遵循特定计算机语言规则编写出的一组指令序列,具体描述了要让计算机执行的操作。
简言之:计算机语言是语法规则,代码是基于规则编写出的具体指令行。
2.3 程序
代码按照特定的顺序和逻辑组合后,便构成了程序。程序通常用于完成某种特定的任务或实现特定功能。
比喻:如果说程序是一道完整的菜,那么代码就是完成这道菜的每一个烹饪步骤。
🔄 程序是如何运行的?(简化流程)
编写源代码(如
main.py)。翻译(编译或解释)为机器能理解的指令。
加载到内存中。
CPU 逐条取指、译码、执行。
最终结果通过输出设备呈现给用户。
3. 计算机语言简史
3.1 第一代语言:机器语言
计算机问世初期,人们只能使用由 0 和 1 组成的二进制机器语言(机器码)操作计算机。最早的编程方式是物理插拔:通过拨动面板上的开关、插拔电缆插头,甚至在纸带上打孔来输入指令。

世界第一台计算机
世界第一台计算机
优点:执行效率最高,能直接操控硬件。
缺点:
编写极度繁琐,开发周期长。
可读性几乎为零,调试和维护极其困难。
程序不具有可移植性(不同 CPU 架构的机器码完全不同)。
趣闻:ENIAC(第一台通用电子计算机)最初编程时,需要六名女性操作员通过插拔数百根电缆和设置数千个开关来完成计算任务。
示例(x86架构下
1 + 1运算):10110000 00000001 00000100 00000001
3.2 第二代语言:汇编语言
为了减轻程序员的痛苦,汇编语言在 20 世纪 50 年代诞生。它使用助记符(Mnemonics)替代二进制数字。
翻译过程:汇编语言源代码需要经过汇编器(Assembler)翻译成机器码,CPU 才能执行。
示例(x86架构下 1 + 1 运算):
mov al, 1 ; 将数字 1 存入寄存器 AL
add al, 1 ; 将寄存器 AL 的值加上 1,结果仍存于 AL进步意义:显著提升了编程效率和代码可读性,至今仍在对性能要求极高的底层开发(如操作系统内核、驱动开发、嵌入式系统)中占有一席之地。
3.3 第三代语言:高级语言
20 世纪 50 年代中后期开始,高级语言逐渐兴起。它们更接近人类的自然语言和数学公式,极大地解放了生产力。
按编程范式分类:
面向过程:C、Pascal、Fortran(强调“怎么做”,注重算法步骤)。
面向对象:C++、Java、Python、C#(强调“谁来做”,注重对象与交互)。
函数式:Haskell、Erlang、部分 Scala(强调计算即数学函数求值)。
常见语言一览:
Python 示例(输出 Hello, world!):
print("Hello, world!")Java 示例(计算 1 + 1):
public class Main {
public static void main(String[] args) {
System.out.println(1 + 1);
}
}4. 『编译型语言』与『解释型语言』
根据将高级语言代码转换为二进制机器指令的时机与方式不同,可将其分为编译型和解释型。实际上,还存在混合型语言。
4.1 编译型语言(Compiled Language)
流程:源代码 → 编译器 → 目标平台的机器码 → 生成可执行文件(
.exe,.out)。常见语言:C、C++、Go、Rust。

特点分析:
✅ 优势:一次编译,反复运行;运行时无额外翻译开销,执行速度极快。
❌ 劣势:跨平台移植需重新编译;开发时每次修改都需重新编译,调试周期稍长。
4.2 解释型语言(Interpreted Language)
流程:源代码 → 解释器逐行读取 → 翻译 → 立即执行。
常见语言:Python、JavaScript、Ruby、PHP。

特点分析:
✅ 优势:跨平台性极强(有解释器即可);修改代码后立即生效,开发调试灵活。
❌ 劣势:每次运行都要翻译,执行效率相对较低。
4.3 混合型语言(Hybrid Language)—— 取长补短
部分语言采用了“编译 + 解释”的混合策略,典型代表是 Java 和 C#。
流程:
源代码(
.java)→ 前端编译器 → 字节码(.class,一种与平台无关的中间代码)。运行时,由平台上的 Java 虚拟机(JVM) 解释执行字节码。
为进一步提速,JVM 内置 JIT 编译器(Just-In-Time Compiler),可将热点字节码直接编译为本地机器码,大幅提升运行效率。
优势:兼具跨平台性(字节码)与高性能(JIT 优化)。
4.4 核心特性对比(含混合型)
🧠 常见疑问与解答(FAQ)
Q1:CPU 只认识二进制,那为什么我们用高级语言写代码时,看到的都是英文单词和符号?
A:这得益于编译器/解释器这一“翻译官”的存在。它将人类易读的高级语言代码转换为 CPU 能理解的二进制指令。
Q2:是不是编译型语言一定比解释型语言快?
A:理论上是,但实际差距因场景而异。现代解释器(如 PyPy 之于 Python)和 JIT 技术已经大幅缩小了性能差距。对于 I/O 密集型任务(如网络请求),解释型语言的速度劣势并不明显。
Q3:汇编语言现在还有人用吗?
A:有。在需要对硬件进行极致控制或极致优化的领域(如嵌入式设备启动代码、加解密算法核心、图形驱动),汇编语言仍然不可或缺。
Q4:我应该先学编译型语言还是解释型语言?
A:对于初学者,通常推荐从解释型语言(如 Python)入手,因为语法简洁、反馈即时、环境搭建简单。对于想深入理解计算机底层原理的学习者,C 语言是不可绕过的基础。