Newshot

给街头实战派计算机科学家的书单

Translation(model translation, not the source's own text)

文章标题:街头斗殴型计算机科学家的书单

正文:

2025 版。这份书单和你会见到的大多数“程序员最佳书籍”清单大不相同——那些清单上尽是 Code Complete、Clean Code、Wistful Wanking for Practical Wankers 和 Design Slatterns 之类的书名。这些东西你走着走着自然就明白了。这里列的是读了之后能让你拿刀砍人的书。你需要把所有这些都读一遍吗?我猜,只有当你想知道里面的东西时才需要。

入门级街头斗殴

  • Stepanov,From Mathematics to Generic Programming 与 The Elements of Programming
  • Gustedt,Modern C
  • Hanson,C Interfaces and Implementations
  • Stroustrup,The C++ Programming Language
  • Josuttis,C++ Move Semantics,因为一个需要 200 页篇幅来解释的语言特性值得研究?不,是因为这本书比任何一本讲 Rust 的书都更能证明 Rust 的合理性。
  • Klabnik、Nichols 和 Krycho,The Rust Programming Language

你需要用 C 或 C++ 写代码吗?一般不需要。但它们是通用语言(lingua franca),在你将遇到的大多数硬件上都有实现,并且是所有重要操作系统的原生 API 表达方式。Rust 是一门很适合写和读的语言,更不适合整天他妈地谈论它,所以别扯这些淡了。

肉搏战

  • Dijkstra,A Discipline of Programming。逐页来看,是整个计算机科学中最美的一本书。
  • Knuth,The Art of Computer Programming,尤其是第 1 卷和第 4B 卷,第三版
  • Warren,Hacker's Delight。一定要买第二版
  • Stevens 和 Rago,Advanced Programming in the UNIX Environment,至少买第二版,最好买第三版
  • Stevens,UNIX Network Programming,第二版
  • Abelson + Sussman,Structure and Interpretation of Computer Programs,计算机科学教科书里封面最好看的一本,毫无悬念,第二版
  • Varghese,Networking Algorithmics
  • McKusick,The Design and Implementation of the FreeBSD Operating System
  • Kerrisk,The Linux Programming Interface
  • Garcia + Widjaja,Communications Networks。哥们,你连 ARQ 都不懂吗?
  • Kleinrock,Queueing Systems,尤其是第 1 卷。这就是他们逼你学概率统计的原因。
  • Hennessy + Paterson,Computer Architecture: A Quantitative Approach。老版本不会把材料锁在线上不给你看,但就是……比较老。
  • Kennedy,Optimizing Compilers for Modern Architectures。如果你想真正实现编译器,一定要把 Muchnik 的 Advanced Compiler Design and Implmentation 也买上
  • CLRS,Introduction to Algorithms
  • Samet,Metric and Multidimensional Data Structures
  • McKenney,Is Parallel Programming Hard, And, If So, What Can You Do About It? 尽管书名荒谬透顶,这本书非常出色,涵盖了你别处找不到的内容。If Naming Books is so Hard for You, Why Didn't You Ask For Help?
  • Crochemere 等,Algorithms on Strings。就像它的名字听起来那样法国味十足,一支真正的 force de frappe
  • Culler 等,Parallel Computer Architecture
  • Ward + Halstead,Computation Structures
  • Shriver + Smith,The Anatomy of a High-Performance Microprocessor
  • Vazirani,Approximation Algorithms
  • Raghaven + Motwani,Randomized Algorithms
  • Garey 和 Johnson,Computers and Intractability。当你意识到自己承诺了一个 np-complete 问题的解法时,总是很尴尬。
  • Sipser,Introduction to the Theory of Computation。但意识到自己承诺了一个不可判定问题的解法时,比那更尴尬。还有,泵引理!
  • Galub + Van Loan,Matrix Computations。这几乎就是一本纯粹的数学教科书,但成群结队、四处游荡的多种族矩阵参与了大量街头斗殴。

进阶街头斗士

  • Ahora + Barak,Computational Complexity
  • Pierce,Types and Programming Languages
  • Okasaki,Purely Functional Data Structures
  • Van Roy + Hardidi,Concepts, Techniques, and Models of Computer Programming
  • Barendregt, The Lambda Calculus。确实,在刀战的狭窄空间里,λ-cube 很少有用。在经历了一整天的头巾、皮手套和弹簧刀之后,即使是斗殴者最终也必须回家,回到家人、火、食物和 F systems 身边。在紧急情况下,它那耀眼的黄色封面可以晃瞎对手的眼睛。

说到数学,你可能想看看 Axler 的 Linear Algebra Done Right 和 Knuth 的 Concrete Mathematics。你需要把组合数学、概率/统计和线性代数烂熟于心。从微积分到微分方程是必须知道的,但我是一个相当硬核的书呆子,却发现自己并不经常做积分。

现在,去街头战斗吧。我没有列出机器学习,因为我不喜欢机器学习。没有量子书籍,因为量子目前对街头战斗还没有用(我们都期待这种情况会改变)。我没有列出 SIMT/加速器书籍,因为它们都是垃圾。我没有列出信息安全,因为信息安全是 QA 的子领域,不服来辩。没有链接,因为我是个懒惰、懒惰的人。

我听说过 Tim Roughgarden 的算法书的好评,已经放在书架上准备很快阅读,但还不能对它们发表看法。同样,Beej 的网络书也是如此,虽然那看起来有点轻量级。他和 Stevens 都没有深入介绍使用 XDP 和 Io_uring 等技术的现代快速网络。

当然,你也应该阅读 Hacking the Planet with Notcurses,为你的团队和家人购买几本。

The translation is machine-generated and individual terms may be off. Nothing is rewritten or cut; the original is authoritative.

Published by Hacker News
This site only summarises and aggregates; copyright stays with the original author. Headlines and summaries follow the source — where they differ, the original wins.
Read the original ↗