Essentials of Programming Languages

Essentials of Programming Languages

"Essentials of Programming Languages" (MIT Press, 2001. 2nd edition, ISBN 0-262-06217-8) is a book by Daniel P. Friedman, Mitchell Wand and Christopher T. Haynes on programming languages.

EoPL is a text book that 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 a course on the principles of compilation and language translation, a related but distinct topic.

Like SICP, EoPL represents a significant departure from the prevailing text book 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 text books 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 language 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 non-conventional text book, which uses Scheme to teach the principles of program design. The range of coverage has expanded to cover topics such as 'types' and 'module systems'. The authors as well as Matthew Flatt have recently provided DrScheme 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: Applications and Implementations".

ee also

*Structure and Interpretation of Computer Programs
*How to Design Programs
*Lisp in Small Pieces

References

* [http://www.cs.indiana.edu/eopl/ Book homepage]
* [http://community.schemewiki.org/?eopl Schemewiki about EoPL]
* [http://www.cs.brown.edu/~sk/Publications/Books/ProgLangs Krishnamurthi, PLAI]


Wikimedia Foundation. 2010.

Игры ⚽ Нужно сделать НИР?

Look at other dictionaries:

  • Programming language — lists Alphabetical Categorical Chronological Generational A programming language is an artificial language designed to communicate instructions to a machine, particularly a computer. Programming languages can be used to create programs that… …   Wikipedia

  • Programming language theory — (commonly known as PLT) is a branch of computer science that deals with the design, implementation, analysis, characterization, and classification of programming languages and programming language features. It is a multi disciplinary field, both… …   Wikipedia

  • C Sharp (programming language) — The correct title of this article is C# (programming language). The substitution or omission of the # sign is because of technical restrictions. C# Paradigm(s) multi paradigm: structured, imperative …   Wikipedia

  • ARS based programming — is built on three principles: Abstraction , Reference and Synthesis . These principles can be seen as a generalized form of the basic operations of the Lambda calculus . All essential features of a programming language can be derived from ARS… …   Wikipedia

  • Constraint logic programming — Programming paradigms Agent oriented Automata based Component based Flow based Pipelined Concatenative Concurrent computing …   Wikipedia

  • The C Programming Language (book) — The C Programming Language (sometimes referred to as K R or the white book ) is a well known computer science book written by Brian Kernighan and Dennis Ritchie, the latter of whom originally designed and implemented the language (as well as co… …   Wikipedia

  • Daniel P. Friedman — For other people of the same name, see Daniel Friedman (disambiguation). Daniel Paul Friedman (born 1944) is a professor of Computer Science at Indiana University in Bloomington, Indiana. His research focuses on programming languages, and he is a …   Wikipedia

  • Teoría de lenguajes de programación — Lambda en minúsculas. La teoría de lenguajes de programación es una rama de la informática que se encarga del diseño, implementación, análisis, caracterización y clasificación de lenguajes de programación y sus características. Es un campo multi… …   Wikipedia Español

  • Northeastern University College of Computer and Information Science — Northeastern University College of Computer Science and Information Science Established 1982 Type Private Dean Larry Finkelstein Academic staff 28 Undergraduates 468 …   Wikipedia

  • Structure and Interpretation of Computer Programs — ( SICP ) is a textbook published in 1985 about general computer programming concepts from MIT Press written by Massachusetts Institute of Technology professors Harold Abelson and Gerald Jay Sussman, with Julie Sussman. It has been used as the… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”