,To mock a mockingbird (part of it) , I continued reading Concepts, Techniques, and Models of Computer Programming.
And it's so good I'm gonna put it next to SICP, GEB, HOP and PAIP (when I get around finishing it). Here are some highlights:
- The book covers a huge spectrum of programming techniques, and ponders lots of variants and different ways of achieving different tasks. It focuses a lot in declarative programming, which comes very natural for extending the model to streams, logic, relational and constraint programming.
- The whole book examples are written in Oz/Mozart, which is a multi-paradigm language with a Prolog-ish syntax which seemed quite odd in the beginning but in the end I learned to like.
- The tone of the book is so unopinionated and so 'formal', that I missed Eva Lu Ator, and Alyssa P. Hacker.
- I had a lovely AHA moment when discovering difference lists. Very useful to understand the paradigm shift of Prolog style programming.
- Concurrency is touched quite heavily, and the explanations on why the different models exist, and when to use what were very useful from a practical perspective. I loved how they introduced Active Objects.
- Explanations of 'well known' concepts like recusion, accumulators, mapcar, transducers, closures, and streams are very nice, and made me remember of the times I discovered them for the very first time.
- Overall, the book is very readable. Clear style and vocab makes it readable in bed.
- There's an introduction to Constraint Programming. Which feels like total magic. I guess it deserves reading a whole book on that to know a bit more about it.
Next, I'm reading PoEAA (a bit old and enterprisey but it's Fowler). And I have Beautiful Data (O'Reilly) waiting....