At college, I gave the programming language course and the compilers course a miss. I have regretted that decision since. (especially after reading this blog post by steve yegge). Im considering going through - Essentials of Programming Languages. what other books/projects could help me understand what's really going on 'under the hood'?
- Structure and Interpretation of Computer Programs - A programming language classic, free as in beer, enclosed in an MIT teaching site.
- The Dragon Book - A classic about compilers.
Once you understand them both, you are well off (I have yet to understand some parts...)
I would recommend the classic Dragon book Compilers: Principles, Techniques and Tools as a good text on compilers.
Another classic: The C programming language by K & R delves into the workings of C, if you're into that.
You might also look at some text dealing with formal languages in general and automata, as a lot of the concepts are important when dealing with compilers. I don't have any particular recommendations for this, though
You will get a lot of recommendations regarding the Dragon Book, but I sometimes wonder if people recommending it have ever read it, and if they have why they recommend it to a begimner - it is far too hard a read.
The best introduction to compilers I've come across is "Brinch Hansen on Pascal Compilers". It's an easy read, uses recursive descent which is easy for a beginner to understand, and the lessons learned can be easily tranferred to languages other than Pascal. Unfortunately, I think it's out of print, but you can pick up acopy on ebay or amazon.
I totally agree with Neil about the Dragon Book. If you're not really into compilers you'll probably give up reading it quite early. If you are interested in how compilers work I recommend:
http://www.cs.princeton.edu/~appel/modern/java/
It is really fun and easy to read with examples and exercises.