Check out my first novel, midnight's simulacra!

Book list for streetfighting computer scientists

From dankwiki
Jump to navigation Jump to search
Edsger Dijkstra is watching you

2025 edition. this is very different from most "best books for programmers" lists you'll see, with Code Complete and Clean Code and Wistful Wanking for Practical Wankers and Design Slatterns and titles like that. you'll figure all that out as you go along. these are books to read so that you can cut motherfuckers with knives. do you need to read all of these? only if you want to know the things inside, i guess.

Introductory streetfighting

  • Stepanov, From Mathematics to Generic Programming and The Elements of Programming
  • Gustedt, Modern C
  • Hanson, C Interfaces and Implementations
  • Stroustrup, The C++ Programming Language
  • Josuttis, C++ Move Semantics, because a language feature requiring 200 pages of explication is worth studying? no, because this book justifies Rust better than any text on that language.
  • Klabnik, Nichols, and Krycho, The Rust Programming Language

need you write in C or C++? not generally. but they are a lingua franca, implemented on most hardware you'll meet, and serve as the native API expression of all operating system that matter. rust is a pretty good language to write and read, and much less to talk about all the fucking time, so cut that shit out.

Brawling combat

  • Dijkstra, A Discipline of Programming. the most beautiful book, page-for-page, in all of computer science.
  • Knuth, The Art of Computer Programming, especially volumes 1 and 4B, third edition
  • Warren, Hacker's Delight. make sure you get the second edition
  • Stevens and Rago, Advanced Programming in the UNIX Environment, get at least the second and preferably the third edition
  • Stevens, UNIX Network Programming, second edition
  • Abelson + Sussman, Structure and Interpretation of Computer Programs, best cover on a CS textbook hands down, second edition
  • Varghese, Networking Algorithmics
  • McKusick, The Design and Implementation of the FreeBSD Operating System
  • Kerrisk, The Linux Programming Interface
  • Garcia + Widjaja, Communications Networks. do you even ARQ, bro?
  • Kleinrock, Queueing Systems, especially volume 1. this is why they made you take prob/stats.
  • Hennessy + Paterson, Computer Architecture: A Quantitative Approach. the older editions don't lock material away from you online, but are...older.
  • Kennedy, Optimizing Compilers for Modern Architectures. if you want to actually implement compilers make sure you get Muchnik's Advanced Compiler Design and Implmentation as well
  • CLRS, Introduction to Algorithms
  • Samet, Metric and Multidimensional Data Structures
  • McKenney, Is Parallel Programming Hard, And, If So, What Can You Do About It? despite its preposterous title, this book is excellent, and covers things you won't find anywhere else. If Naming Books is so Hard for You, Why Didn't You Ask For Help?
  • Crochemere et al, Algorithms on Strings. just as french as it sounds, a true force de frappe
  • Culler et al, Parallel Computer Architecture
  • Ward + Halstead, Computation Structures
  • Shriver + Smith, The Anatomy of a High-Performance Microprocessor
  • Vazirani, Approximation Algorithms
  • Raghaven + Motwani, Randomized Algorithms
  • Garey and Johnson, Computers and Intractability. it's always embarrassing to realize you've promised a solution to an np-complete problem.
  • Sipser, Introduction to the Theory of Computation. but not as embarrassing as realizing you've promised a solution to an undecidable problem. also, the pumping lemma!
  • Galub + Van Loan, Matrix Computations. this is pretty much a straight mathematics textbook, but roaming multiethnic gangs of matrices make up many streetfights.

For the advanced streetfighter

  • 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. it is true that the λ-cube is rarely useful within the tight confines of a knifefight. after a long day of bandanas and leather gloves and switchblades, even the brawler must eventually go home to family and fire and food and F systems. in a pinch, its bedazzling yellow cover can blind opponents.

speaking of math, you might want to take a look at Axler's Linear Algebra Done Right and Knuth's Concrete Mathematics. you'll want to know your combinatorics, your prob/stats, and your linear algebra cold. calculus through diffeqs is necessary to know, but i'm a pretty hardcore nerd and yet don't find myself integrating things all that often.

now go forth and fight in the streets. i list no machine learning because i dislike machine learning. there are no quantum books because quantum is not yet useful for streetfighting (we all look forward to this situation changing). i list no SIMT/accelerator books because they're all shite. i list no infosec because infosec is a subfield of QA, fight me. there are no links because i'm a lazy, lazy man.

i've heard good things about Tim Roughgarden's algorithms books, and have them on my shelves to read soon, but cannot yet speak to them. likewise Beej's book on networking, though that looks kinda lightweight. neither he nor Stevens goes into modern fast networking using things like XDP and Io_uring.

you should of course also read Hacking the Planet with Notcurses, buying copies for your team and family.