It’s the end of the year again — time to compile this year’s reading list. 2020 was a truly extraordinary year, and I didn’t read all that many books. Most were related to my field, and several were rereads from undergrad. Those classics always yield something new on each reading.
Humanities
This year’s humanities reading centered on understanding the history of computing in the last century — software history covering UNIX, Linux, and the free software movement, and hardware history covering the rise and fall of microcomputers. I spent some time on these books, ordered from most to least recommended:
- The Art of UNIX Programming
- The Design and Evolution of C++
- UNIX: A History and a Memoir
- The Cathedral & the Bazaar: Musings on Linux and Open Source by an Accidental Revolutionary
- Free as in Freedom: Richard Stallman’s Crusade for Free Software
- Fire in the Valley: The Birth and Death of the Personal Computer
The best way to understand this history is to hear it from the people who lived it. I’ve gradually assembled a YouTube playlist — probably incomplete, but I’ll keep adding to it.
Engineering
I read very few engineering books this year. Specific engineering practice is not a major part of my day-to-day life — I’m not spending time solving engineering problems per se; instead I spend much of my time reading research papers. The one engineering book I did read:
The reason this caught my attention: one of the chapters was contributed by Russ Cox. Guess which one? Dependency management, of course.
Technical
This year, because of teaching responsibilities, I took on two foundational courses: Computer Graphics and Geometry Processing.
For the first course I reread several graphics books from undergrad:
And also read these rendering books on ray tracing and physically-based rendering for the first time, getting a more systematic grounding in physical rendering, materials theory, and color science:
- Physically Based Rendering: From Theory to Implementation
- Ray Tracing Gems: High-Quality and Real-Time Rendering with DXR and Other APIs
- Color Imaging: Fundamentals and Applications
For the Geometry Processing course, closely aligned with my research, I read these systematically to prepare course materials:
The mathematics used in geometry processing research looks formidable, so I filled in gaps from undergrad in differential geometry and PDEs:
Finally, early in the year, while writing Go Under the Hood, I speed-read these two:
Review and Further Reading
Overall, I didn’t read many books this year, and most were technical. The reason is that most of my reading time went to research papers — I checked just now, and since starting my PhD the papers on my hard drive already exceed 1,000. But they’re too specialized to list here; perhaps someday I’ll start a paper reading series.
Beyond books, I also came across many high-quality open courses from North American universities:
I’m always struck by the quality of education resources available to students today. When I was an undergraduate, so much was hidden away — the most accessible things were MIT OCW and a handful of Yale open courses, and the truly high-quality material was only available once you were inside those institutions. That was a big part of why I chose to study abroad. It’s different now.
Though I imagine every generation has its own struggles: in this age of information overload, discerning and filtering high-quality content is its own challenge. But that’s a topic for another day.
If you’re interested in previous years' reading lists: Reading List Archive.
又到年末了,是时候整理一波今年的读书清单了。2020 年实在是太特殊了,这一年里读过的书其实也不多, 大多与专业相关,且好几本是本科时期读过再来重读的,这类书过于经典,每次读的收获都会有所不同。
人文类
今年人文类的书籍其实集中在了理解上个世纪计算机的发展史上了,包括软件的部分包括 UNIX、 Linux、自由软件运动等,硬件则包括微计算机的兴衰。 所以今年花了一些时间去读这些书,按推荐强弱先后排序:
- The Art of UNIX Programming
- The Design and Evolution of C++
- UNIX: A History and a Memoir
- The Cathedral & the Bazaar: Musings on Linux and Open Source by an Accidental Revolutionary
- Free as in Freedom: Richard Stallman’s Crusade for Free Software
- Fire in the Valley:The Birth and Death of the Personal Computer
最后,理解这些历史其实最好的方式是去听这些人的口述历史,为此我也陆陆续续的搜集了一个 YouTube 的播单,可能并不是很完整,如果以后还有 看到类似的视频,这个列表还会继续更新。
工程类
今年工程类的书籍读得非常少,一方面原因是因为比较具体的工程实践不在我的生活中,我不需要去花时间 来思考一些工程上的问题,相反而是需要花很多时间在科研文献上的阅读。唯一读过的工程类的书籍是:
这本书吸引我的原因是其中有一章是 Russ Cox 参与的,猜猜是哪一章?没错,就是依赖管理。
专业类
今年因为教学的需求,我负责了两门基础课程:Computer Graphics 和 Geometry Processing。
因为第一门基础课的原因,我重读了很多本科时期读过的图形学的书籍,比如说:
同时额外读了这些以前没读过的光追实现的渲染类的书,比较系统的了解了物理渲染、材质相关的基础理论以及色彩科学:
- Physically Based Rendering: From Theory to Implementation
- Ray Tracing Gems: High-Quality and Real-Time Rendering with DXR and Other APIs
- Color Imaging: Fundamentals and Applications
对于第二门课而言,因为是与自己的研究领域强相关,为准备课件系统性的读了这些书:
做几何处理的研究,用到的数学其实(看起来)非常的高深,所以还读了这些书来补全自己曾经本科时期没有 系统学习的这些学科的短板,主要是微分几何和偏微分方程:
最后的话,就是年初的时候因为写《Go 语言原本》的原因速读过这两本书:
回顾和进一步阅读
总的来说,今年读过的书不多,而且多半偏向专业类。原因是大部分的时间其实花在了读论文上,刚看了一眼我 硬盘里的文献大小,读博士以来已读的 paper 已经超过 1000 篇了。但这些论文过于专业化了,也不适合 作为读书清单列出来,如果有机会,以后可能会开一个 paper 清单的系列。 除了读书之外,其实还看到过很多北美高效的高质量课程:
当然,还有很多高质量的课程也不一一列举了,以后有机会我们再来列一个清单。
在看到这些公开的课程时总会惊叹现在的学生能够享受到这么优质的教育资源,记得我本科的时候很多信息 其实都是秘密,那个时候比较有用的只有 MIT 的 OCW 系列、耶鲁等系列公开课,而且资源很有限。 真正高质量的教学内容其实只有跻进了这些大学里才能真正享受到,这也是我选择留学的一个重要的原因, 但现在不一样了。
不过我能想想每一代人也会有每一代人的痛苦,比如这个信息爆炸的年代如何鉴别和筛选高质量的内容以及 对这些内容进行取舍也会是很头疼的问题,但这也是另一个话题,我们以后再表。
如果对往年的阅读清单感兴趣的话,可以查看这里:往年阅读清单合集。