I just recently bought the new edition of the "dragon book" and it seems to be a really high quality book (being worth the spent money). Although I studied electrical engineering and did only have a brief understanding of compilers, the book provides a very good opportunity to learn more about the (partially quite theoretical) backgrounds of compilers. The writing style is very good to read. Furthermore, I like the mixture of theory and practical examples as provided by the book very much.
This book doesn't help to get systematic, general, and consistent knowledge about how to design a new programming language or how to develop a new compiler. Authors tend to explain even the most simple things using a lot of words, making an illusion it's a complicated stuff.
After reading first chapters of this book, I have decided to stop and to search for another sources of explanation, and I found one very helpful, useful book "Engineering a Compiler" by Keith D. Cooper and Linda Torcson. Some passages below should give you a feeling of how different they are.
On Context-Free Grammars
1) from "Compilers. Principles, Techniques, and Tools": [...]In this section, we introduce a notation - the "context-free grammar", or "grammar" for short - that is used to specify the syntax of a language. Grammars will be used throughout this book to organize compiler front ends.[...]
2) from "Engineering a Compiler": [...]The traditional notation for expressing syntax is a grammar - a collection of rules that define, mathematically, when a string of symbols is actually a sentence in the language. Computer scientists usually describe the syntactic structure of a language using an abstraction called a context-free grammar (cfg). [...]