Skip to main content

计算机基础:从会用工具到理解系统

很多入门教程从某门编程语言的语法开始,却默认你已经知道文件保存在哪里、命令为什么能运行、浏览器如何找到服务器、程序报错后该看什么。结果是代码可以照着敲,一旦环境、路径、权限或网络稍有变化,就不知道从哪里排查。

这本小册补的是这些经常被跳过、却会反复影响开发工作的基础。它不要求你有计算机专业背景,也不要求你先记住大量名词。学习方式只有一条主线:先观察一个真实现象,再用命令或小程序验证,最后把现象归纳成可迁移的方法。完成整本小册后,你应当能独立搭建开发环境、管理文件和版本、解释一个程序如何运行、定位常见网络与权限问题,并把小项目可靠地交给别人使用。

这本小册包含什么

全书分为 11 个部分,前后存在明确的依赖关系:

  1. 开发环境:认识编辑器、终端、Shell、Linux 和常用命令,建立工作的基本操作面。
  2. 文件与文档:理解路径、文本编码、结构化数据、图片音视频、正则表达式与备份。
  3. 项目开发基础:学习项目结构、包管理、环境变量、脚手架、日志和调试。
  4. Git 与 GitHub:用版本控制保存过程,通过分支、评审和自动化完成协作。
  5. 计算机网络:从 IP、DNS 和 HTTP 出发,亲手观察请求、服务与 API。
  6. 计算机安全基础:建立最小权限、身份认证、加密签名和常见攻击的防护意识。
  7. 浏览器基础:用开发者工具理解页面、请求、存储、性能和浏览器 API。
  8. 计算机组成与运行原理:回答代码怎样变成进程、数据怎样进入内存、文件怎样落到磁盘。
  9. 编程思维与算法:不绑定具体框架,练习问题拆解、抽象、数据结构与复杂度分析。
  10. 数据与数据库:从表格思维走向数据建模、SQL、索引、事务、备份和迁移。
  11. 测试、排错与可靠性:建立从读错误、复现问题到自动测试、监控和发布的完整闭环。

如果你完全没有基础,建议按顺序学习。已经开始写项目的读者,可以先读第 1、3、4 部分,再根据问题回查其他章节。不要因为某个概念暂时看不懂而停下:先完成实验并保存现象,之后在真实项目中再次遇到时,理解通常会自然加深。

开始前准备一个实验目录

本书所有不会影响系统配置的实验,都建议放进同一个目录。打开终端并执行:

mkdir -p ~/computer-basics-lab/{notes,projects,data,backup}
cd ~/computer-basics-lab
pwd

Windows PowerShell 可以使用:

New-Item -ItemType Directory -Force "$HOME/computer-basics-lab/notes"
New-Item -ItemType Directory -Force "$HOME/computer-basics-lab/projects"
New-Item -ItemType Directory -Force "$HOME/computer-basics-lab/data"
New-Item -ItemType Directory -Force "$HOME/computer-basics-lab/backup"
Set-Location "$HOME/computer-basics-lab"
Get-Location

以后看到命令前有 $,它只是终端提示符,不要输入。命令中的路径、端口和文件名可以按你的环境修改;涉及删除、覆盖、权限和密钥时,先读懂命令再执行。本书的实验默认只操作 computer-basics-lab,不要拿系统目录做练习。

接着创建学习日志 notes/learning-log.md,每章至少记录四项:今天要解决的问题、执行过的命令、一个失败现象、最终如何验证成功。技术能力并不等于记住多少命令,而是能否留下证据,让明天的自己或队友复现过程。

每章应该怎样学习

建议为每章预留 60 到 120 分钟,并遵循固定循环:

  1. 先读“学习目标”,用自己的话写下当前理解。
  2. 逐条执行实验,不要一次粘贴整页命令;每一步都观察输出。
  3. 主动改错一个参数,比较成功和失败的差异。
  4. 完成章末练习与验收清单,不满足就回到对应小节。
  5. 把可复用命令、截图或结论写进学习日志,并提交到 Git。

例如,学习 HTTP 时不要只背诵 404 表示未找到。你应该启动一个本地服务器,访问存在和不存在的路径,在浏览器 Network 面板与 curl -i 中分别找到状态码,然后解释请求 URL、服务端路由和响应之间的关系。能够制造问题、观察问题并恢复,才算真正掌握。

贯穿全书的小项目

你将逐步完成一个“本地学习档案”项目。它最初只是几个 Markdown 和 JSON 文件;随后加入 Shell 自动化、Git 版本控制、本地 HTTP 服务、浏览器页面、SQLite 数据库、测试和备份。每一部分只增加一小块能力,因此不会被大型框架淹没,却能看到同一份数据如何穿过文件、进程、网络、浏览器和数据库。

项目目录最终大致如下:

computer-basics-lab/
├── README.md
├── notes/
│ └── learning-log.md
├── data/
│ ├── topics.json
│ └── learning.db
├── projects/
│ └── study-tracker/
├── scripts/
│ ├── check.sh
│ └── backup.sh
├── tests/
└── backup/

这个结构不是必须一次创建完成。每当一章引入新目录时,先解释它负责什么,再添加文件。最终你不仅拥有一个作品,还会拥有从需求、实现、调试到交付的完整过程记录。

如何判断自己真的学会了

“看懂了”不能作为验收证据。每章至少用以下一种方式证明结果:

  • 能在不看原文的情况下重新完成核心操作;
  • 能解释命令输入、输出和副作用,而不是只说“它能用”;
  • 能故意制造一个常见错误,并根据日志或状态恢复;
  • 能把概念应用到不同工具,例如把 Git 中的工作区状态与数据库事务状态进行类比,同时指出两者并不相同的地方;
  • 能写出一份让另一位新手照着执行也不会误操作的说明。

遇到失败时,先保留完整错误文本,再记录操作系统、工具版本、当前目录、输入命令和预期结果。搜索错误时优先使用最稳定、最有辨识度的那一行,并优先核对官方文档。不要为了让报错消失而随意使用管理员权限、关闭安全检查或粘贴来历不明的命令。

学习边界与安全约定

本书包含网络、安全和系统命令,但目标是理解与防护。所有安全实验只针对你自己的本地文件、本地服务或明确授权的练习环境。不要扫描不属于你的服务器,不要尝试绕过真实账户的认证,也不要把 API 密钥、密码、Cookie 或私钥提交到 GitHub。

不同操作系统的命令会有差异。正文主要给出 macOS、Linux 命令,并在关键处补充 Windows PowerShell 方案。遇到差异时先运行版本查询,例如 git --versionpython3 --versionnode --version,再对照对应版本的官方文档。命令成功执行只是起点,理解它读取了什么、修改了什么、结果保存在哪里,才是本书真正训练的能力。

现在进入第 1 部分,先把编辑器、终端和实验目录准备好。不要追求一次配置完美;让环境可观察、可恢复、可重复,远比安装最多插件重要。