It’s awesome how much great stuff is available on the net, yet I really like technical books, e.g. books on general programming topics:
- The Pragmatic Programmer: The most useful book on programming I know; this teaches the right attitude towards the profession and provides great tips that stick to the mind and therefore really help.
- The Mythical Man-Month: Essays on Software Engineering: A quite old collection of essays, aside from puzzling mentions of things like punchcards totally relevant until today. Famous for “No silver bullet”.
- Structure and Interpretation of Computer Programs (SICP): The functional style introduction to computer science, very interesting and with magicians on the cover and dedicated to the “spirit living inside the machine”.
- Concepts, Techniques, and Models of Computer Programming: A very recent book on programming, not based on a single paradigm (as functional programming for the SICP), but explaining the different programming paradigms using Oz, a multi-paradigm programming language.
- Refactoring: The book on the programming technique originating from the Smalltalk scene, now commonly supported by Java IDEs.
- Design Patterns: The classic on trying to achieve higher reusability of object-oriented software components. Useful reference, uses code samples in Smalltalk and C++.
Then there are books on particular programming languages and topics, which sometimes are easy to use the wrong way, or hard to use the right way if only studied too superficially:
- Java Generics and Collections: Really nice compact book on the details of Generics, the most relevant change to Java in its history. It explains how Generics can be used to implement design patterns. And it also is a great reference on the collection classes.
- Mastering Regular Expressions: Regular Expressions are unbelievably practical for certain things, and while the basics are really easy to get, it ain’t that easy to really master them in a sense that you can craft the RegEx you need in a certain situation. This book teaches how, I think it’s the only book dedicated exclusivly to regular expressions.
- The Definitive ANTLR Reference: Building Domain-Specific Languages: Implementing domain-specific languages is awesome with ANTLR, this book and the ANTLRWorks IDE.
And some books that I like on language and computational linguistics, a field of extreme variety of different theories and approaches:
- The Cambridge Encyclopedia of Language: Richly illustrated book presenting the phenomenon language in its breadth.
- The Linguistics Wars: Great book about the history of linguistics, the paradigm changes and rivaling schools, evolving around Noam Chomsky, the “epic hero”.
- The Oxford Handbook of Computational Linguistics: It’s up-to-date, affordable and has a great cover, it’s a great reference.
- Word Sense Disambiguation: Algorithms and Applications: This is Computational Linguistics at its best, theoretically sound, using formal notation, taking an empirical approach. It seems other volumes in that series are equally good.