A work-in-progress list of books with random thoughts on them. This is here mostly for my own reference, but hey! :)
An informal introduction on how to use type systems as a proof mechanism. As a first approach to the subject, the first two thirds of the book were very enjoyable; the book is written as a dialogue, in the style of Plato, which made it easy to read. That said, the informal approach made it hard to follow the final, more complicated, examples where there is a lot to keep track of.
This was my first exposure to Lisp-like languages, it was particularly nice to see how mathematical induction was used within the toy language to avoid loops and infinite recursion. In hindsight, it might have been smarter to start with “The Little Schemer” so that only the concepts related to type theory were new.
A good follow-up book is likely “Types and programming languages”, which is a much more formal book on the topic. It is on the “To Read” list below.
Category Theory is another mathematical area that has a lot of overlap with programming, and this book takes a very informal approach to explaining the related concepts. I recall being bothered by this, as there weren’t a lot of precise definitions; instead, a lot of Haskell programs were used. I think the text suffered as a result, but I am biased towards the more mathematical, precise way of defining things. I ended up dropping the book around the mid point, but still managed to learn a lot with it.
This goes over a high level overview of what a debugger needs to in order to debug programs. It talks about breakpoints, symbols and symbol tables, stack frames, expressions, values, targets, the execution control main loop, the remote protocol, and GDBserver.
Free book available at: http://aosabook.org/en/gdb.html.