|
Engineering a Compiler, by Keith D. Cooper, Linda Torczon, Morgan Kaufmann,
2003. Today's compiler writer must choose a path through a design space that is
filled with diverse alternatives, each with distinct costs, advantages, and complexities.
This book explores this design space by presenting some of the ways these problems
have been solved, and the constraints that made each of those solutions attractive.
By understanding the parameters of the problem and their impact on compiler design,
the authors hope to convey both the depth of the problems and the breadth of possible
solutions. Their goal is to cover a broad enough selection of material to show readers
that real tradeoffs exist, and that the impact of those choices can be both subtle
and far-reaching.
|
|
Advanced Compiler Design and Implementation, by Steven S. Muchnick, Morgan
Kaufmann, 1997. Guides professionals and graduate students in designing and implementing
highly optimizing compilers for real-world languages. The author covers a wide range
of code optimizations, explaining how to determine the relative importance of the
optimizations and the most effective ways to implement them. He uses four case studies
of commercial compiling suites, including Sun Microsystem's for SPARC, IBM's for
POWER and PowerPC, DEC's for Alpha, and Intel's for Pentium and related processors,
to illustrate various approaches to compiler structure, intermediate-code design,
and optimization.
|
|
Programming Language Pragmatics, by Michael S. Scott, Morgan Kaufmann, 2000.
This book addresses the fundamental principles at work in the most important contemporary
languages, highlights the critical relationship between language design and language
implementation, and devotes special attention to issues of importance to the expert
programmer. Thanks to its rigorous but accessible teaching style, you'll emerge
better prepared to choose the best language for particular projects, to make more
effective use of languages you already know, and to learn new languages quickly
and completely.
|
|
Compilers, by Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman, Addison-Wesley,
1986. The text begins with an introduction to the principal ideal behind compilation,
and then illustrates these ideas by constructing a simple one-pass compiler. The
remainder of the book amplifies the ideas presented in the first two chapters and
discusses more advanced topics such as syntax analysis, type checking, code generation,
and code optimization.
|
|
Writing Compilers and Interpreters, by Ronald Mak, Wiley, 1996. Grab hold
of your C++ because here you'll learn how to use it to write compilers and interpreters--
those programs that translate high-level computer code into machine-executable code.
The only C++-based book on compilers and interpreters available, this revised and
updated edition shows you the ABC's of reading and listing a program, breaking it
into tokens, parsing it, and examining its syntax. Then it shows you how to build
an actual interpreter, debugger, and finally, a compiler.
|
|
The Interpretation of Object-Oriented Programming Languages, by Iain Craig,
Springer-Verlag, 2000. While there are many books on particular languages, especially
C++ and Java, they tend to concentrate on how to program using that language and
their treatment of the semantics is highly languages-specific. A more wide-ranging
comparison of the various languages and their underlying concepts is lacking. The
Interpretation of Object-Oriented Programming Languages attempts to provides a comprehensive
treatment of the main approaches to object-oriented languages, including:- class-based,
prototype, and actor languages. This book will be useful for final year undergraduates/first
year postgraduates studying object-oriented programming, as well as research students
and others requiring a detailed account of object-oriented programming languages
and their central concepts.
|
|
Foundations of Object-Oriented Languages: Types and Semantics, by Kim B.
Bruce, MIT Press, 2002. In recent years, object-oriented programming has emerged
as the dominant computer programming style, and object-oriented languages such as
C++ and Java enjoy wide use in academia and industry. This text explores the formal
underpinnings of object-oriented languages to help the reader understand the fundamental
concepts of these languages and the design decisions behind them.
|
|
Essentials of Programming Languages - 2nd Ed., by Daniel P. Friedman, Mitchell
Wand, Christopher T. Haynes, MIT Press, 2001. This textbook offers a deep understanding
of the essential concepts of programming languages. The approach is analytic and
hands-on. The text uses interpreters, written in Scheme, to express the semantics
of many essential language elements in a way that is both clear and directly executable.
It also examines some important program analyses. Extensive exercises explore many
design and implementation alternatives.
|
|
The Design and Evolution of C++, by Bjarne Stroustrup, Addison-Wesley Professional,
1994. Presents the definitive insider's guide to the design and development of the
C++ programming language. Provides insights into the aims, principles, and real-world
constraints which shaped C++.
|