Compiler design is a fascinating, and even more, essential subject in computer science. No one getting into software design shouldn't know how compilers work. Before reading this book (which I'm currently reading in my spare time) to me, compilers were black boxes, put your source in one end, it dissapears into the machine, and it spits out an object file.
This well organised book assumes a fundamental knowledge of C data structures and discrete math. I'd have to say thought that the description of finite automation was a bit unusual, to me. I'm already fluent in regular expressions thanks to my (nearly) full bookshelf of O'reilly titles, and found the mathematical approach a bit less… Read more