Which non-Erlang specific books do you recommend?

Was thinking how we have a lot of experienced Erlang developers here and wondered what non-Erlang specific books you might all recommend that you feel could help people become better Erlang programmers (or just better programmers in general).

Are there any programming books that aren’t Erlang specific that have helped you or you think could help others? Please share them here! :smiley:

6 Likes

https://dev.realworldocaml.org/ showing the full chain of work from code through debugging and understanding how the compiler and runtime generates machine code. Very readable even for non ocamlers.

Any book on assembler, I cut my teeth on zilog Z80 cpu docs and the knowledge there still pays off years later. You can probably find a nice arm64 book that’s more relevant today.

haproxy’s overview of TCP and HTTP transaction model is fantastic HAProxy version 2.7-dev8-155 - Configuration Manual and while not as comprehensive as Stevens famous TCPIP books, is a much quicker read. Networking is absolutely everywhere.

Meredith Belbin’s research on teams and similar research later on fundamentally changed how I think about and interact with people. Belbin Team Roles | Belbin is an introduction. I can’t think of a great book to read on this as they all tend to have a rather academic tone, but it’s foundational learning about people at its best.

All the books by Tanenbaum are great OS background knowledge.

Why Computer Fail by Jim Gray. Not much has changed in 50 years.

McCarthys original LISP paper, and Let Over Lambda for showing how powerful macro systems are.

I’ll add links for these when I’m at my desk next time.

5 Likes

My first assembly language was for the Z80. I learned it from Programming the Z80 by Rodnay Zaks.

My latest assembly language is AArch64 (ARM64). When working on the JIT for AArch64, I found the following page useful: A Guide to ARM64 / AArch64 Assembly. I later found this nice series of blog posts: The AArch64 processor (aka arm64).

I learned about algorithms from The Art of Computer Programming, especially volumes 1 and 3, by D.E. Knuth. I find them very readable. Non-mathematical readers (like myself) can skip the mathematical parts of the books and still get a lot out of them.

I have learned a great deal about practical programming and software engineering from the books by Brian Kernighan and his co-authors:

About the time I started working on larger software projects, I found the book Writing Solid Code by Steve Maguire. It was my first introductions to the idea of testing your application in a debug build that contained assertions and extra code whose only purpose was to make bugs reveal themselves.

When I started working with Erlang, someone at the Computer Science Laboratory recommended Structure and Interpretation of Computer Programs by Harold Abelson and Gerald Jay Sussman. Despite being an academic textbook, I found it to be a joy to read, and the insights gained from it helped me in my work with Erlang and its implementation.

3 Likes

I would highly recommend Elements of Programming by Alexander Stepanov and Paul McJones, it is IMHO masterpiece.

3 Likes

One of the best books I’ve read is Coders at Work. Not specifically programming or engineering or any really particular part of what we do when making programs, but amazingly good observations from some hugely experienced people. Including Joe Armstrong of course. In fact his bit inspired me to finally start leaning Erlang properly. Also jwz’s part is excellent, pragmatic above and beyond. Great book.

4 Likes

Someone else already mentioned Knuth AoCP.
W.H.Burge Recursive Programming Techniques (1975)
/ Dijkstra, A Discipline of Programming

Gries, Science of Programming
\ Reynolds, Craft of Programming
These last three are basically all about the methodology
of programming-in-the-small.
There was a series of small hardback books which I
think were "Methuen Monographs*. I learned how to
implement list processing from one. I have spent a
couple of hours in a fruitless search for them. I have
about 10 of them in storage, but I’m not even sure which city.
Hoare, Cooperating Sequential Processes
Various Lisp manuals, from Lisp 1.5 to InterLISP to CLTL2.
Gerald Weinberg, The Psychology of Computer Programming, 1971
(+ other books by Weinberg).

3 Likes

Great recommendations already. SCIP and the McCarthy LISP Paper have a special place in my digital bookshelf.

Anyway some additions:

Designing Data-Intensive Applications

A well-written solid overview how modern databases / datasystems are built and work under the hood. Especially in the context of distribution and transactions and their trade-offs. An interessting and informative read imo.

The Pragmatic Programmer

As the title promises it help to layoff technical infatuation a bit and assemble a more practical view of things. I liked it and always recommend it to newcomers.

Clean Architecture

Good old Uncle Bob. While I do not agree with all of the presented ideas it is a solid read imo.

The Architecture of Open Source Applications

Some chapters a defintely worth a read. Really enjoyed the riak part :slight_smile:

Computer Networking: A Top-Down Approach

Was used as accompanying reading material in an university course I attended and kept it in good memory.

2 Likes