boluopai.
EN

工程阅读

工程使理解取得可运行、可观察、可修改的形式。本指引定位实现所需的概念与来源:学习地图、命令行、版本历史、软件设计、算法、系统、数据工具和物理条件。选择有助于实际工作的部分;环境写作指南说明结果怎样连接预期协作。课程、文档和源仓库配有有用的教材与论文。

工具页帮助找到可用的工具和 Skills;这张阅读地图解释它们背后的概念、方法与实现。文档既支持学习,也可在实际工作中按需查阅。

选择能接上自己起点的主线。建议入口包括:程序设计读 CS 61A 与 Composing Programs,算法读普林斯顿课程与 Algorithms,系统读 CS:APP,计算理论读 MIT 与 Sipser,再按需深入 Arora–Barak。可以按当前兴趣与问题选择。课程提供讲授、作业与项目,教材展开连贯概念,文档说明具体接口。链接包含课程讲义、开放教材和出版社书目。

先找到地图,再做出一个可用环境

材料 从哪里开始
CS 自学指南 · 源仓库 PKUFlyingPig 发起的开放自学地图。先读使用指南,再按已有基础选程序设计、数学、算法、系统等课程。
清华大学计算机系学生科协:SAST skill docs 中文技能引导文档。按具体需要进入问题解决、Git、Linux、编辑器、编程语言与开发框架;适合连接基础课程和实际工作。
MIT Missing Semester 2026 从 shell、命令行环境和开发工作流进入,跟随课程当期讲义做小练习。已有版本通过网站的历年入口查阅。
William Shotts,The Linux Command Line 作者提供的开放书籍。学习文件、权限、进程、管道、重定向与脚本。macOS 和 Linux 共享部分 Unix 概念,具体命令选项与系统管理仍要查看目标系统文档。
Vim 官方文档 · Vim 用户手册 先用 vimtutor 理解模式、移动与编辑,再按用户手册学习组合命令、搜索与替换;具体选项查 :help。它是编辑工具的学习入口,可以与自己的编辑器选择并存。

一个合适的起点是让模型协助建立小项目,自己看懂它的输入、输出、文件和运行结果;遇到不理解的概念,沿这些入口补读。工程阅读可以与正在做的事交错发生。

Git 与 GitHub:让作品和修改能够接续

材料 解决的问题
Chacon 与 Straub,Pro Git,第二版 第 1–3 章理解仓库、提交、分支与合并;需要解释历史结构时读第 10 章。Git 是版本控制系统。
GitHub 入门文档 仓库页面、协作和托管的入口;GitHub 是围绕 Git 的平台,两者各有职责。
GitHub Pull Requests 文档 比较修改、提出评审、处理分支与合并。包含变更的理由、结果与操作说明。

软件设计与计算机系统

程序设计与抽象:CS 61A 和 SICP

CS 61A 是这里的基础入口。它帮助理解程序如何由函数、数据与解释过程构成;后面的软件构造关注怎样把已有编程能力组织成可靠的软件。

课程与教材 内容与用途
Berkeley CS 61A · John DeNero,Composing Programs 课程与在线教材配对。从函数、高阶函数、递归与数据抽象,进入对象、解释器和不同编程方式。配合课程的小练习与项目,看清程序的行为和抽象边界。
Abelson 与 Sussman,SICP 第二版 · MIT 提供的全文 PDF 用 Scheme 展开过程与数据抽象、状态、解释器和求值。它是 CS 61A 思想背景的重要原典,可以在 Composing Programs 之外深入阅读。
SICP JavaScript 改写与 Scheme 对照版 对照 Scheme 原版与 JavaScript 改写版;站点也链接到可交互阅读与求值的 Interactive SICP JS。选择语言时看已有经验和想理解的问题;版本之间有对应关系,也有实现差异。

软件构造与设计

课程、讲义与参考书 内容与用途
John Ousterhout,A Philosophy of Software Design 作者书目与课程材料。围绕复杂性、模块、接口和信息隐藏理解软件设计。「哲学」在书名中指设计思想,这里按软件工程用途收录。
MIT 6.031 Software Construction(2021) · 同页逐讲阅读 在编程基础之后学习规格、测试、抽象数据类型与并发,把「代码能运行」发展为有明确行为契约的软件。这里以课程自带讲义配套;Ousterhout 的书是相邻的设计阅读。

从程序看到机器、操作系统与网络

课程与教材 内容与用途
CMU 15-213 Introduction to Computer Systems · Bryant 与 O’Hallaron,Computer Systems: A Programmer’s Perspective,第 3 版 即 CS:APP/深入理解计算机系统。从程序员的视角理解数据表示、机器代码、内存层次、链接、进程、虚拟内存与系统 I/O。作者站另有实验与学生资源。
Arpaci-Dusseau 与 Arpaci-Dusseau,Operating Systems: Three Easy Pieces 作者开放教材及项目。从虚拟化、并发与持久化理解操作系统;可以配合系统课程按章节阅读。
MIT 6.1810 Operating System Engineering(2025) · 同年 xv6 教材与源码入口 通过一个小型 RISC-V 操作系统连接文字、实现与实验。教材和实验需要匹配课程年份与源码版本。

算法、计算与复杂性

算法:从普林斯顿课程与教材开始

课程与教材 内容与用途
Princeton Algorithms, Part I 与 Part II · Sedgewick 与 Wayne,Algorithms,第 4 版 主入口。课程与教材围绕排序、查找、图、字符串等数据结构与算法展开;教材配套站提供代码、练习、讲义及课程链接。注意课程主要使用 Java。
Berkeley CS170 · Dasgupta、Papadimitriou 与 Vazirani,Algorithms(DPV)作者材料 进一步学习算法设计、正确性与复杂度论证,按问题进入分治、贪心、动态规划、线性规划和归约。这是另一部同名的 Algorithms。
MIT 6.006 Introduction to Algorithms(2020) · CLRS,Introduction to Algorithms,第 3 版 课程有独立讲义,并把 CLRS 第三版列为补充参考;可用于补强数学建模、数据结构、正确性与渐近分析。另有第 4 版,使用时核对章节和题号。
Jeff Erickson,Algorithms 作者开放教材、讲义与习题。理解递归、动态规划、贪心与图算法,练习说明正确性和成本。

计算理论:MIT、Sipser,再到 Arora–Barak

课程与教材 内容与用途
MIT 18.404J Theory of Computation(2020) · Michael Sipser,Introduction to the Theory of Computation,第 3 版 基础主线。课程提供讲授和习题,教材从自动机、可计算性进入复杂性;书的作者页面提供版本说明与勘误。使用习题时按课程所用版本核对题号。
MIT 6.045J Automata, Computability, and Complexity(2011) · 课程讲义与教材说明 同一基础领域的另一套课程组织,适合按主题补读。
Sanjeev Arora 与 Boaz Barak,Computational Complexity: A Modern Approach 进阶主线。已有计算模型、归约与基本复杂性类基础后,再深入复杂性类、随机性、交互证明与下界等问题。作者页面提供公开草稿和配套材料;草稿与出版版应分别标识。
Boaz Barak,Introduction to Theoretical Computer Science 开放教材。从计算模型、可计算性和效率进入复杂性问题。区分做不到、计算代价高和现有程序尚未实现。

算法和复杂性分析回答形式条件下的性质;实际系统还受数据、实现和机器资源影响。实际速度测量与渐近复杂度分析提供两种观察尺度。

本文集相关比较的原始来源

来源 与文章的关系
A. M. Turing(1936),On Computable Numbers, with an Application to the Entscheidungsproblem,尤其第 6 节 通用机器为从个人哲学到个人模型中的解释器类比提供形式参照。
Thomas R. Gruber(1993),A Translation Approach to Portable Ontology Specifications,第 1–2 节 知识表示中的对象、关系与共享概念化。可对照借火与创造能力的培养发展的工程本体阅读;后者进一步提出自己的解释。
Donald E. Knuth,Literate Programming 把解释与程序代码组织在一起的既有实践。比较它的技术用途与本文集更广义的文学自然语言编程。

自改进研究

文档或论文 内容
Gödel Machine 与 Darwin Gödel Machine 两类自改进技术研究入口:前者围绕证明引导,后者围绕经验评估。比较其目标、假设和验证方式,再读本文集中的相关类比。

物理条件、测量与反馈

工程实现发生在物质世界中:程序要在机器上运行,测量需要设备和时间,界面也要进入人的感知与行动。能量、延迟、误差和身体条件共同影响实际使用。

费曼物理学讲义提供物理概念的开放在线阅读:第一卷侧重力学、辐射和热,第二卷侧重电磁与物质,第三卷讨论量子力学。各卷提供相应主题的概念、推导与例子。

物理学研究规律,工程在这些条件下设计与实现。哲学、心理与工程的三位一体展开它们与哲学、心理的联系。

语言模型、检索与数据工具

这里收录语言模型、数据库与检索系统的教材、课程和官方工具入口。

教材或课程 内容
Jurafsky 与 Martin,Speech and Language Processing,第 3 版在线草稿 自然语言处理与语言模型教材,涵盖词元、嵌入、上下文、信息抽取、时间、话语和检索。官网提供全文与课件;2026-08-19 版的 Agents 章仍未完成。
Hugging Face Agents Course 在线课程,介绍模型、消息、工具及行动后的观察。
Agent Skills 概览 · 规范 用于组织指令、脚本和参考资源的开放格式。
工具或项目 一般用途与官方入口
SQLite 嵌入式关系数据库,提供 SQL 查询与事务。
sqlite-utils · Datasette 前者提供 SQLite 数据导入与操作的命令行/Python 接口;后者提供数据库浏览、查询与 JSON 接口。
PostgreSQL · pgvector 关系数据库及向量相似度检索扩展。
Hindsight Agent 记忆系统,提供保留、检索、可修订的 Observations 与按问题定义的 Mental Models/Knowledge Pages。Yinyang 的原生形成方法把这些能力接到可读的 Personal 文章与相互协调的工作答案。
Graphiti 面向 Agent 的时序知识图谱。
Mem0 为 Agent 与应用提供持久记忆的组件。
Letta 带有持久状态和记忆管理的 Agent 平台。

具体能力和运行条件见各项目文档。