This site will look much better in a browser that supports web standards, but is accessible to any browser or Internet device.
This is not really a book review. But, due to my recent change in commuting, I've been able to begin catching up on past issues of the programming magazines that I read. Due to one thing or another, I've gotten behind in my magazines over the past few years. But, I'm making up for that now.
Here is a list of the programming magazines that I read regularly. (At least the ones I read right now.)
There are several others that I have read over the years. But, given the constraints of time and money, these are the ones I've settled on for the moment.
Unfortunately, my professional life has intruded into my ability to write much lately. Issues with a new company, new commute, and such have kept me away.
Hopefully, I'll be able to get back to writing this blog a bit more regularly.
For the few people reading this, I apologize for the delay. "We are working to resolve the problem. Please stand by."<grin/>
Compiler Design in C
Allen I. Holub
Prentice Hall, 1990
I decided to take a break from the relatively new books I've been reviewing and hit a real classic.
Over a decade ago, I saw Compiler Design in C when I was interested in little languages. A quick look through the book convinced me that it might be worth the price. I am glad I took the chance. This book describes the whole process of compiling from a programmer's point of view. It is light on theory and heavy on demonstration. The book gave an address where you could order the source code. (This was pre-Web.) All of the source was in the book and could be typed in if you had more time than money.
Holub does a wonderful job of explaining and demonstrating how a compiler works. He also implements alternate versions of the classic tools lex and yacc with different tradeoffs and characteristics. This contrast allows you to really begin to understand how these tools work and how much help they supply.
The coolest part for me was the Visible Parser mode. Compilers built with this mode displayed a multi-pane user interface that allowed you to watch a parse as it happened. This mode serves as an interactive debugger for understanding what your parser is doing. This quickly made me move from vaguely knowing how a parser works to really understanding the process.
Many years later, I took a basic compilers course in computer science and the theory connected quite well with what I learned from this book. Although the Dragon Book covers the theory quite well, I wouldn't consider it as fun to read. More importantly, nothing in the class I took was nearly as effective as the Visible Parser in helping me to understand the rules and conflicts that could arise.
Although this book is quite old, I would recommend it very highly for anyone who wants to understand how parsers work, in general. Even if you've read the Dragon Book cover to cover and can build FA in your sleep, this book will probably still surprise you with some fundamentally useful information.
The book appears to be out of print, but there are still copies lurking around. If you stumble across one, grab it.