去东京大学读 PLT 了,本文留作纪念。
前言(与正文无关)
我观念是,这东西真不需要全民学。。(但是万一有兴趣,整理一条正常点的路供入门)。中途放弃完全没问题😂。不要有任何压力。
在本文修改过程中发现了 https://csdiy.wiki/ 介绍了很多课程,本文更多是比较详细的流程介绍。此路线仅供参考。
提到的课程默认为课程 + 你能搜到的各种学习心得,题解,甚至是小型社区。
书默认为书 + 各种题解 + 你能搜到的各种分析文章。本文提到的书在
- github
都能下载到。
如果 link 失效了,https://web.archive.org/ 是好工具。
必须
先通读
和
可能的误区
预先准备:
- 上网工具。
- 随意。能用就行(贴一个 affair ,均为不限时套餐 https://www.mojie.me/#/register?code=GUf3aUmD ,有土区节点)
Linux 下工具的选择(if 你已经有了合适的 then 忽略就好 end)
对于用机场的纯新手,clash for win 是全平台 + 傻瓜式。Make things done. (这个闭源,but it works)
qv2ray 停更(好像有 fork 在更新,我不清楚),v2raya 开源,但是配置也许有点麻烦。
- 语言能力
- if 英语好 then 直接看教案 else 浏览器安装翻译插件 end
- 2025 年更新: Optional: 大语言模型, 具体见 Self learning in LLM era(WIP)
学习流程
学习顺序是从上到下。语言只是表达的载体,重点不是用了哪门语言。
https://zhuanlan.zhihu.com/p/456110373 61a 是 SICP 的 Python 版,更加“实用”+“简单”一点
SICP
- Python
update: 看不了了,看看里面配套教材算了。https://www.reddit.com/r/learnprogramming/comments/1d6wj8h/the_cs61a_site_now_requires_berkeley_account_to/ 61a 每年更新多次,假如发现题目更新了。但练习还没公布,就做前一轮的。格式一般是 spXX ,suXX,faXX
直接看 Calendar ,从左到右,从上到下。做 lab, hw, proj
- SICP 原版
书 (有亿点点难)
视频(youtube/bilibili 都有)(建议看)
- JS
https://sourceacademy.org/ js 改写版,适合括号恐惧症。
学完后,基本的程序思维就有了,下面的 C/C++ 是两门大学里大概率会遇到的语言。(if 业余自学 or 用不到 or 大学里没有 then 可以忽略 end)。
C
C 的类型声明很容易看晕,https://cdecl.org/
C++
《cpp primer》不是 Plus。虽然这书只有 C++11。但是基本的都有了。
彩蛋
仅十天用这书 + 几次讲解帮某大二网友通过了转专业 C++ 考试。而且是没有课,直接考的。
为什么没有 Java,因为我目前不会写
下面开始学习解决问题的方法
算法
《算法 4》 或 cs61b(61b 我没刷,因为在之前就刷了几百题力扣 + 用算法 4 代替了,此外 61b 是 Java)
算法导论不适合初学者
理由

然后是练习。
读完开始做力扣,建议从树开始做。
为什么不推荐比如 hdu,vjudge 等的 oj 平台
前提:本文读者是初学者
oi/acm 更多是竞技,力扣更多是健身。力扣提供了友善的函数接口,可以不用管快读等。而且都有极其详细的评论区 + 题解。
为什么建议从树开始做
理由:树可以体现递归思想,dfs/bfs 都能化成树的搜索。甚至编译原理的 AST 也是一棵树。图是树的扩展。
然后是抽象到具体,代码是怎么变成指令的
https://godbolt.org/ 一个生成汇编/字节码的 playground
https://dogbolt.org/ 一个反编译网站
csapp
这课是基于 x86-64 体系的。
应该是最清晰的版本,如果听不懂可以去 bilibili / youtube 找带翻译的。
lab 可以在 的 labs/ 找到
CS61c
基于 RISC-V,侧重点不同, 反正都是好课
材料地址
学完这些,可以选择自己的方向了
选择上面这些课的理由:
同样是实现算法,有些人的代码就很整洁,有些人是一坨坨的 for 套 for 套 for, 逻辑分散,控制流极其凌乱。有些人是抽象成一个个子函数,功能分离。最小职责原则。
同样是解决问题。不同的算法有各自的优劣。
相同的算法,不同的写法,硬件上的效率不同。
下面是 roadmap。图片取自

DL
字面上的入门书。
Math
评价:虽然不少大学都有离散数学,但是教得太割裂了。举个小例子,为什么 sum 函数累加求和 ,s 要预先= 0,prod 累积,p = 1, 矩阵方阵累乘,p = 单位矩阵。 https://zh.m.wikipedia.org/zh-cn/單位元
CS70
非常贴合实际,有很多网红题,比如小岛居民眼睛颜色问题。
具体数学
假如想进阶语言,Python 方面推荐
进阶
python
流畅的 python https://book.douban.com/subject/27028517/
python cookbook https://python3-cookbook.readthedocs.io/zh_CN/latest/
你可能会注意到,上面的路线里没有什么 爬虫,怎么做网站,小程序开发 等。
代码维护
等到了这里,应该已经有一定量的代码积累了。
《代码大全》
《重构》
可选
JS
流水的框架,铁打的 JS,虽然 JS 一年一个新版本,但是加的特性也没多少。
《JS 红宝书》目前最新版 ES2019 ,虽然有点老了,但是包含了 ES6 就够了。
《犀牛书》太厚了。《js 精粹》太旧了。
留言或者疑问可发送至 i [at] asukaminato [dot] eu [dot] org
asuka minato 是谁
我老婆