Essentials of Programming Languages

Essentials of Programming Languages

Essentials of Programming Languages (EOPL) is a textbook on programming languages by Daniel P. Friedman, Mitchell Wand, and . EOPL surveys the principles of programming languages from an operational perspective. It starts with an interpreter in Scheme for a simple functional core language similar to the lambda calculus and then systematically adds constructs. For each addition, for example, variable assignment or thread-like control, the book illustrates an increase in expressive power of the programming language and a demand for new constructs for the formulation of a direct interpreter. The book also demonstrates that systematic transformations, say, store-passing style or continuation-passing style, can eliminate certain constructs from the language in which the interpreter is formulate

Author
Christopher T. Haynes
Author
Christopher T. Haynes
Author
Daniel P. Friedman
Author
Daniel P. Friedman
Author
Mitchell Wand
Author
Mitchell Wand
Comment
enEssentials of Programming Languages (EOPL) is a textbook on programming languages by Daniel P. Friedman, Mitchell Wand, and . EOPL surveys the principles of programming languages from an operational perspective. It starts with an interpreter in Scheme for a simple functional core language similar to the lambda calculus and then systematically adds constructs. For each addition, for example, variable assignment or thread-like control, the book illustrates an increase in expressive power of the programming language and a demand for new constructs for the formulation of a direct interpreter. The book also demonstrates that systematic transformations, say, store-passing style or continuation-passing style, can eliminate certain constructs from the language in which the interpreter is formulate
Congress
enQA76.7 .F73 2008
Depiction
EOPL 3rd edition cover.jpg
Genre
Textbook
Has abstract
enEssentials of Programming Languages (EOPL) is a textbook on programming languages by Daniel P. Friedman, Mitchell Wand, and . EOPL surveys the principles of programming languages from an operational perspective. It starts with an interpreter in Scheme for a simple functional core language similar to the lambda calculus and then systematically adds constructs. For each addition, for example, variable assignment or thread-like control, the book illustrates an increase in expressive power of the programming language and a demand for new constructs for the formulation of a direct interpreter. The book also demonstrates that systematic transformations, say, store-passing style or continuation-passing style, can eliminate certain constructs from the language in which the interpreter is formulated. The second part of the book is dedicated to a systematic translation of the interpreter(s) into register machines. The transformations show how to eliminate higher-order closures; continuation objects; recursive function calls; and more. At the end, the reader is left with an "interpreter" that uses nothing but tail-recursive function calls and assignment statements plus conditionals. It becomes trivial to translate this code into a C program or even an assembly program. As a bonus, the book shows how to pre-compute certain pieces of "meaning" and how to generate a representation of these pre-computations. Since this is the essence of compilation, the book also prepares the reader for a course on the principles of compilation and language translation, a related but distinct topic. Apart from the text explaining the key concepts, the book also comprises a series of exercises, enabling the readers to explore alternative designs and other issues. Like SICP, EOPL represents a significant departure from the prevailing textbook approach in the 1980s. At the time, a book on the principles of programming languages presented four to six (or even more) programming languages and discussed their programming idioms and their implementation at a high level. The most successful books typically covered ALGOL 60 (and the so-called Algol family of programming languages), SNOBOL, Lisp, and Prolog. Even today, a fair number of textbooks on programming languages are just such surveys, though their scope has narrowed. EOPL was started in 1983, when Indiana was one of the leading departments in programming languages research. Eugene Kohlbecker, one of Friedman's PhD students, transcribed and collected his "311 lectures". Other faculty members, including Mitch Wand and Christopher Haynes, started contributing and turned "The Hitchhiker's Guide to the Meta-Universe"—as Kohlbecker had called it—into the systematic, interpreter and transformation-based survey that it is now. Over the 25 years of its existence, the book has become a near-classic; it is now in its third edition, including additional topics such as types and modules. Its first part now incorporates ideas on programming from HtDP, another unconventional textbook, which uses Scheme to teach the principles of program design. The authors, as well as Matthew Flatt, have recently provided DrRacket plug-ins and language levels for teaching with EOPL. EOPL has spawned at least two other related texts: Queinnec's Lisp in Small Pieces and Krishnamurthi's Programming Languages: Application and Interpretation.
Hypernym
Textbook
Isbn
0-262-06279-8
Isbn
0
IsbnNote
Is primary topic of
Essentials of Programming Languages
ItalicTitle
enforce
Label
enEssentials of Programming Languages
Library of Congress Classification
QA76.7 .F73 2008
Link from a Wikipage to an external page
community.schemewiki.org/%3Feopl
www.eopl3.com/
web.archive.org/web/20070630055031/http:/www.cs.indiana.edu/eopl/
Link from a Wikipage to another Wikipage
ALGOL 60
Category:Computer programming books
Category:Computer science books
Category:Programming language topics
Christopher T. Haynes
Continuation-passing style
Daniel P. Friedman
DrRacket
How to Design Programs
Interpreter (computing)
Lambda calculus
Lisp (programming language)
Matthew Flatt
Mitchell Wand
MIT Press
Modular programming
Programming language
Programming Languages: Application and Interpretation
Prolog
Register machine
Scheme (programming language)
SNOBOL
Store-passing style
Structure and Interpretation of Computer Programs
Textbook
Type systems
LiteraryGenre
Textbook
Name
enEssentials of Programming Languages
Name
enEssentials of Programming Languages
NonFictionSubject
Programming language
NumberOfPages
416
Pages
416
PubDate
enApril 2008
Publisher
MIT Press
Publisher
MIT Press
Publisher
MIT Press
SameAs
4jaaj
Essentials of Programming Languages
Essentials of Programming Languages
m.02q 228
Q5399600
Subject
enProgramming languages
Subject
Category:Computer programming books
Category:Computer science books
Category:Programming language topics
Thumbnail
EOPL 3rd edition cover.jpg?width=300
WasDerivedFrom
Essentials of Programming Languages?oldid=1071126375&ns=0
WikiPageLength
5406
Wikipage page ID
11071609
Wikipage revision ID
1071126375
WikiPageUsesTemplate
Template:Infobox book
Template:Reflist