计算机基础:从会用工具到理解系统
很多入门教程从某门编程语言的语法开始,却默认你已经知道文件保存在哪里、命令为什么能运行、浏览器如何找到服务器、程序报错后该看什么。结果是代码可以照着敲,一旦环境、路径、权限或网络稍有变化,就不知道从哪里排查。
这本小册补的是这些经常被跳过、却会反复影响开发工作的基础。它不要求你有计算机专业背景,也不要求你先记住大量名词。学习方式只有一条主线:先观察一个真实现象,再用命令或小程序验证,最后把现象归纳成可迁移的方法。完成整本小册后,你应当能独立搭建开发环境、管理文件和版本、解释一个程序如何运行、定位常见网络与权限问题,并把小项目可靠地交给别人使用。
这本小册包含什么
全书分为 11 个部分,前后存在明确的依赖关系:
- 开发环境:认识编辑器、终端、Shell、Linux 和常用命令,建立工作的基本操作面。
- 文件与文档:理解路径、文本编码、结构化数据、图片音视频、正则表达式与备份。
- 项目开发基础:学习项目结构、包管理、环境变量、脚手架、日志和调试。
- Git 与 GitHub:用版本控制保存过程,通过分支、评审和自动化完成协作。
- 计算机网络:从 IP、DNS 和 HTTP 出发,亲手观察请求 、服务与 API。
- 计算机安全基础:建立最小权限、身份认证、加密签名和常见攻击的防护意识。
- 浏览器基础:用开发者工具理解页面、请求、存储、性能和浏览器 API。
- 计算机组成与运行原理:回答代码怎样变成进程、数据怎样进入内存、文件怎样落到磁盘。
- 编程思维与算法:不绑定具体框架,练习问题拆解、抽象、数据结构与复杂度分析。
- 数据与数据库:从表格思维走向数据建模、SQL、索引、事务、备份和迁移。
- 测试、排错与可靠性:建立从读错误、复现问题到自动测试、监控和发布的完整闭环。
如果你完全没有基础,建议按顺序学习。已经开始写项目的读者,可以先读第 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 分钟,并遵循固定循环:
- 先读“学习目标”,用自己的话写下当前理解。
- 逐条执行实验,不要一次粘贴整页命令;每一步都观察输出。
- 主动改错一个参数,比较成功和失败的差异。
- 完成章末练习与验收清单,不满足就回到对应小节。
- 把可复用命令、截图或结论写进学习日志,并提交到 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 --version、python3 --version、node --version,再对照对应版本的官方文档。命令成功执行只是起点,理解它读取了什么、修改了什么、结果保存在哪里,才是本书真正训练的能力。
现在进入第 1 部分,先把编辑器、终端和实验目录准备好。不要追求一次配置完美;让环境可观察、可恢复、可重复,远比安装最多插件重要。