Recommended Reading for Programmers
Here are some resources I recommend for programmers. I am a systems programmer, thus my affection for Rust in particular and a general bias towards systems programming topics.
Recommended Rust Resources & Reading#
Here are a few links to materials that helped me get my bearings in Rust, and understand it deeper.
Many of these are bog-standard, and the same materials others would recommend. This is a good thing. Rust is an extremely well-polished programming language with an excellent community. Trust them about the idioms. Trust the programming language. If you don’t understand why Rust made a certain decision, know that there is almost certainly a well-considered, important reason, and that includes its choices of commonly-recommended documentation.
Beginners#
- Of course, The Book is the absolutely indispensable canonical reference for the programming language.
- O’Reilly’s book is also well worth reading
- For those who like exercises, Rustlings is incredibly well-done.
- For those coming, like I did, from C and C++, Learn Rust the Dangerous Way is a great resource.
- Rust has a relatively small standard library. Some external dependencies are practically standard, and have their own tutorials and documentation. Among these are Tokio, Serde, and log.
Intermediate#
- Rust for Rustaceans is a nice “second semester” course in Rust, covering all the things that every advanced Rust programmer really should know, and no longer has to learn the hard way. This contained a lot of especially useful information for the serious software engineering and dependency management considerations involved in maintaining a library and publishing a crate.
- Faster than Lime, as far as I can tell, straddles beginner and intermediate.
Unsafe Rust#
- There are a lot of misunderstandings about
unsafe
in Rust, but most can be cleared up by reading the Rustonomicon. Even if you don’t personally have occasion to useunsafe
, it is an essential part of the language, and the crates that you depend on – whose source code you should be reading – will use it. - Learn Rust With Entirely Too Many Linked Lists is a project to teach Rust by programming the data structure it is perhaps least well-suited to.
- Ralf Jung on undefined behavior:
- Ralf Jung’s series on pointers/memory models:
Articles#
- Typestate Pattern in Rust
- An introduction to Oxide’s new operating system and debugger, Hubris and Humility
- Rust can help with the environment as well
- Not Rust, but systems programming relevant: structure packing
- Why Discord is switching from Go to Rust
- A thorough treatise on why Go is bad
Other Programming Reading#
Essential resources#
- For C:
- For C++: Scott Meyers Effective C++ series
- For OS: Design and Implementation of the FreeBSD Operating System
- General-purpose introduction
- I’ve not read A Data-Centric Introduction to Computing, but I understand it’s very good
Articles#
- Hillel Wayne’s three part series on how software engineers truly are engineers.
- Hillel Wayne also has good things to say about why comments are good actually, for not only “why” but also “what.”
Classics, for the vibes#
- In the beginning was the command line – please note that this is a book.
- The Rise of Worse is Better – please note that I am literally trying to unseat C++, and I am not an advocate of the Worse is Better philosophy
- The UNIX-HATERS Handbook
- The Jargon File
- C++ Frequently Questioned Answers
Newsletter
Find out via e-mail when I make new posts!