Beginner Programming Resources
By Edward Willis (
gopher://encw.xyz and
http://encw.xyz)
Published Aug/16/2024
I love programming books, including beginner books. I'm not a beginner, but I
still love to read them anyway for their differences in pedagogy. I also enjoy
the sense of nostalgia. Writers of beginner books often seem so excited and
proud to be someone's introduction to programming, and they try to impart their
enthusiasm.
Anyway, here is my list of programming books for the new programmer, those
desiring a refresher, or those simply looking for something new to read.
I had for a long time considered C the best first programming language for a
new programmer. But now I think that the best language to start with is
actually assembly language itself. Rather than explain why I don't suggest
Python or JS or any super high level language in my own words, I offer this
excellent piece:
https://www.evanmiller.org/you-cant-dig-upwards.html
I'd say start with the excellent Programming From the Ground Up by Jonathan
Bartlett. Fortunately it is available for free as a PDF. If you want to buy a
physical copy, try to get the purple cover version, as that is the version the
author publishes himself and therefore sees money from.
Also The Personal Computer from the Inside Out by Murray Sargent III and
Richard L. Shoemaker, and Assembly Language Step by Step by Jeff Duntemann.
Buy all three books and read them concurrently for best effect. They each
include things the other's miss, and with the differences in their pedagogy,
and how your brain absorbs information, you will be less likely to get stuck.
If you are a senior programmer who still hasn't slayed the dragon of imposter
syndrome, then learning assembly language is a good way to gain confidence. Buy
these books and kick that dragon's ass.
If you have trouble with the above method, take a step back and work on your C
skills, and then go back to x86 assembly. Or you could tackle something like
6502 assembly.
I think every programmer should own a copy of K&R C. Remember to get the second
edition!
Of course, it is mandatory that a programmer own a copy of Introduction to
Algorithms. This book is expensive at more than $100. But again, mandatory, so
just buy it.
Practical C Programming, by Steve Oualline is a great book for developing good
practices and style.
The Practice of Programming by Brian W. Kernighan and Rob Pike. Kernighan is
the K in K&R C.
Hacking: The Art of Exploitation by Jon Erickson. Do you want a book that is
really about hacking, rather than about metaspoilt or some other tool? Then
this is the book for you. But that's not all, not nearly. It is also a great
book for programmers.
I can't miss out on mentioning Michael Abrash's Graphics Programming Black
Book.
https://github.com/jagregory/abrash-black-book It is available for free
here luckily, as a physical copy is very, very expensive. Abrash was there with
Carmack at id in the early 90s, so he knows a thing or two about optimization!
Of course there are other books I could recommend for more specialized
endeavors, but this is a great jumping off point. If you've read these books,
and written code to apply what you've learned, you'll be a good programmer
indeed.
There are actually some GREAT programming video games out there that are
enjoyable AND educational!
First up: Human Resource Machine. This game has you given an input, and having
to write what is essentially assembly code to compute a desired output. Lots of
fun, starts slow and is a great introduction to assembly principles.
TIS-100 is a unique emulated computer system with its own assembly-like
language. In order to play this game you will literally have to approach it
like any new architecture and read the manual.
Last but not least, Turing Complete. In this game you start by building simple
electronic components, and over the course of the game we are combining what
we've made into larger pieces until we've built a fully functional computer,
which you can then program.