当你写代码时,你真正在做的事
Source: Dev.to
Computing, Stripped to Its Core
在最底层,计算是简单的:
输入 → 转换 → 输出
你使用过的每一个系统——无论是计算器、后端 API,还是分布式系统——都遵循这一模式。
机器到底是如何完成这种转换的?
Everything Is Data (Even Your Code)
在计算机内部,没有 变量、函数 或 对象——只有 二进制数据(0 和 1)。
你的代码(例如 if 语句、循环、API 调用)会被编译或解释成 机器指令,这些指令仅仅是数字。
The CPU: The Real Executor
CPU 是真正 执行工作 的部件。它遵循一个简单的循环:
取指 → 解码 → 执行
1. Fetch
从内存中获取下一条指令。
2. Decode
理解这条指令的含义。
3. Execute
执行操作(数学、逻辑、内存访问)。
Example
当你写下:
const sum = a + b;
CPU 并不会看到 JavaScript。它看到的更像是:
- 将
a加载到寄存器 - 将
b加载到寄存器 - 将两者相加
- 将结果存储
这就是计算。
The GPU: Specialized Parallelism
CPU 是通用的,而 GPU 则专为运行成千上万个较小的核心而设计,这些核心能够在不同的数据点上同时执行相同的指令。
GPU 的主导领域:
- 图形渲染
- 机器学习
- 仿真
CPU 只有少数几个强大的核心,适合顺序任务和复杂的逻辑与分支。
GPU 拥有成千上万个更简单的核心,适合大规模并行——一次对海量数据集执行相同的操作。
What “Transformation” Actually Means
你编写的每个程序都会转换数据。
示例
- API → 将请求转换为响应
- 数据库 → 将查询转换为结果
- 前端 → 将状态转换为 UI
在所有这些之下,数据在内存中流动,被 CPU/GPU 处理,然后写回。
Memory Is the Real Battlefield
大多数性能问题并不是计算本身——而是数据移动。
- CPU 很快。
- 内存访问很慢。
系统效率取决于:
- 访问内存的频率
- 数据的组织方式
- 移动数据的次数
From This to Scalable Systems
可扩展系统不过是大规模的数据转换流水线。
- 后端服务 → 处理请求
- 队列系统 → 在服务之间搬运数据
- 数据库 → 存储和检索结构化数据
在规模化时,你不只是“处理请求”;你在管理数据如何在机器之间流动、转换和持久化。
Why This Knowledge Matters
如果不了解计算,你可能会:
- 过度获取数据
- 设计低效的 API
- 忽视内存成本
- 滥用并发
- 仅凭猜测性能而不进行推理
有了这些理解,你可以:
- 设计自然可扩展的系统
- 找出瓶颈
- 做出有意的权衡
The Shift
大多数开发者会想:“我该如何实现这个功能?”
更好的开发者会想:“数据是什么,它是如何流动的?”
这就是区别所在。
Final Thought
计算并非魔法、抽象或高层次的东西。它是 在硬件约束下对数据进行结构化转换。
一旦你明白了这一点,你就会:
- 停止盲目写代码…
- …并开始有意识地进行系统工程。