<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://debianws.lexgopc.com/wiki143/index.php?action=history&amp;feed=atom&amp;title=Essentials_of_Programming_Languages</id>
	<title>Essentials of Programming Languages - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://debianws.lexgopc.com/wiki143/index.php?action=history&amp;feed=atom&amp;title=Essentials_of_Programming_Languages"/>
	<link rel="alternate" type="text/html" href="http://debianws.lexgopc.com/wiki143/index.php?title=Essentials_of_Programming_Languages&amp;action=history"/>
	<updated>2026-10-25T05:27:24Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>http://debianws.lexgopc.com/wiki143/index.php?title=Essentials_of_Programming_Languages&amp;diff=4636635&amp;oldid=prev</id>
		<title>imported&gt;BattyBot: /* top */Removed/fixed incorrect author parameter(s), performed general fixes</title>
		<link rel="alternate" type="text/html" href="http://debianws.lexgopc.com/wiki143/index.php?title=Essentials_of_Programming_Languages&amp;diff=4636635&amp;oldid=prev"/>
		<updated>2023-09-24T05:46:58Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;top: &lt;/span&gt;Removed/fixed incorrect author parameter(s), performed &lt;a href=&quot;/wiki143/index.php?title=WP:AWB/GF&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;WP:AWB/GF (page does not exist)&quot;&gt;general fixes&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Infobox book&lt;br /&gt;
|italic title = force&lt;br /&gt;
| name             = Essentials of Programming Languages&lt;br /&gt;
| image            = EOPL 3rd edition cover.jpg&lt;br /&gt;
| caption    = &lt;br /&gt;
| author           = [[Daniel P. Friedman]], [[Mitchell Wand]], [[Christopher T. Haynes]]&lt;br /&gt;
| cover_artist     = &lt;br /&gt;
| country          = &lt;br /&gt;
| series           = &lt;br /&gt;
| subject          = [[Programming language]]s&lt;br /&gt;
| genre            = [[Textbook]]&lt;br /&gt;
| publisher        = [[MIT Press]]&lt;br /&gt;
| pub_date         = April 2008 (3rd ed.)&lt;br /&gt;
| media_type       = &lt;br /&gt;
| pages            = 416&lt;br /&gt;
| isbn = 0-262-06279-8&lt;br /&gt;
| isbn_note = (3rd ed.)&lt;br /&gt;
| oclc             = &lt;br /&gt;
| dewey            = &lt;br /&gt;
| congress         = QA76.7 .F73 2008&lt;br /&gt;
}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Essentials of Programming Languages&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;EOPL&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;) is a textbook on [[programming language]]s by [[Daniel P. Friedman]], [[Mitchell Wand]], and [[Christopher T. Haynes]].&lt;br /&gt;
&lt;br /&gt;
EOPL surveys the principles of programming languages from an operational perspective. It starts with an [[interpreter (computing)|interpreter]] in [[Scheme (programming language)|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.&lt;br /&gt;
&lt;br /&gt;
The second part of the book is dedicated to a systematic translation of the interpreter(s) into [[register machine]]s. 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 &amp;quot;interpreter&amp;quot; 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 &amp;quot;meaning&amp;quot; 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.&amp;lt;ref&amp;gt;{{Cite web|url=https://mitpress.mit.edu/contributors/mitchell-wand|title=Mitchell Wand|website=The MIT Press|language=en|access-date=2019-08-05}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Like [[Structure and Interpretation of Computer Programs|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 (programming language)|Lisp]], and [[Prolog]]. Even today, a fair number of textbooks on programming languages are just such surveys, though their scope has narrowed.&lt;br /&gt;
&lt;br /&gt;
EOPL was started in 1983, when Indiana was one of the leading departments in programming languages research. Eugene Kohlbecker, one of Friedman&amp;#039;s PhD students, transcribed and collected his &amp;quot;311 lectures&amp;quot;. Other faculty members, including Mitch Wand and Christopher Haynes, started contributing and turned &amp;quot;The Hitchhiker&amp;#039;s Guide to the Meta-Universe&amp;quot;—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 [[Type systems|types]] and [[Modular programming|modules]]. Its first part now incorporates ideas on programming from [[How to Design Programs|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.&lt;br /&gt;
&lt;br /&gt;
EOPL has spawned at least two other related texts: Queinnec&amp;#039;s&amp;lt;ref&amp;gt;{{Cite web|title=Christian Queinnec&amp;#039;s home page|url=https://pages.lip6.fr/Christian.Queinnec/WWW/|website=pages.lip6.fr|access-date=2020-05-20}}&amp;lt;/ref&amp;gt; &amp;#039;&amp;#039;Lisp in Small Pieces&amp;#039;&amp;#039;&amp;lt;ref&amp;gt;{{Cite web|title=C. Queinnec&amp;#039;s L.i.S.P book and code|url=https://pages.lip6.fr/Christian.Queinnec/WWW/LiSP.html|website=pages.lip6.fr|access-date=2020-05-20}}&amp;lt;/ref&amp;gt; and Krishnamurthi&amp;#039;s &amp;#039;&amp;#039;[[Programming Languages: Application and Interpretation]]&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
*&amp;#039;&amp;#039;[[Structure and Interpretation of Computer Programs]]&amp;#039;&amp;#039;&lt;br /&gt;
*&amp;#039;&amp;#039;[[How to Design Programs]]&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
* [http://www.eopl3.com/ Authors&amp;#039; home page for &amp;lt;cite&amp;gt;Essentials of Programming Languages&amp;lt;/cite&amp;gt;, Third Edition]&lt;br /&gt;
*[https://web.archive.org/web/20070630055031/http://www.cs.indiana.edu/eopl/ Book homepage for first edition]&lt;br /&gt;
*[http://community.schemewiki.org/?eopl EoPL page] on Schemewiki&lt;br /&gt;
&lt;br /&gt;
[[Category:Computer programming books]]&lt;br /&gt;
[[Category:Computer science books]]&lt;br /&gt;
[[Category:Programming language topics]]&lt;/div&gt;</summary>
		<author><name>imported&gt;BattyBot</name></author>
	</entry>
</feed>