- Hardcover: 568 pages
- Publisher: The MIT Press (January 7, 1992)
- Language: English
- ISBN-10: 0262061457
- ISBN-13: 978-0262061452
- Product Dimensions: 8.5 x 1.5 x 9.5 inches
- Shipping Weight: 2.2 pounds
- Average Customer Review: 18 customer reviews
- Amazon Best Sellers Rank: #2,950,708 in Books (See Top 100 in Books)
Enter your mobile number or email address below and we'll send you a link to download the free Kindle App. Then you can start reading Kindle books on your smartphone, tablet, or computer - no Kindle device required.
To get the free app, enter your mobile phone number.
Essentials of Programming Languages
Use the Amazon App to scan ISBNs and compare prices.
Fulfillment by Amazon (FBA) is a service we offer sellers that lets them store their products in Amazon's fulfillment centers, and we directly pack, ship, and provide customer service for these products. Something we hope you'll especially enjoy: FBA items qualify for FREE Shipping and Amazon Prime.
If you're a seller, Fulfillment by Amazon can help you increase your sales. We invite you to learn more about Fulfillment by Amazon .
"Children of Blood and Bone"
Tomi Adeyemi conjures a stunning world of dark magic and danger in her West African-inspired fantasy debut. Pre-order today
Customers who bought this item also bought
Customers who viewed this item also viewed
What other items do customers buy after viewing this item?
"Friedman, Wand, and Haynes have done a landmark job.... The sample interpreters in this book are outstanding models. Indeed, since they are runnable models, I'm sure that these interpreters will find themselves at the cores of many programming systems over the years."
—from the foreword by Hal Abelson
About the Author
Daniel P. Friedman is Professor of Computer Science at Indiana University and is the author of many books published by the MIT Press, including The Little Schemer (fourth edition, 1995), The Seasoned Schemer (1995), A Little Java, A Few Patterns (1997), each of these coauthored with Matthias Felleisen, and The Reasoned Schemer (2005), coauthored with William E. Byrd and Oleg Kiselyov.
Top customer reviews
There was a problem filtering reviews right now. Please try again later.
1. Very comprehensive .Covers a whole gamut of programming language features.By the time you finish the book you will have built interpreters which demonstrate recursion, call-by-value/reference/need and name semantics, class based and prototype based OO, type inference ,Continuations etc .
2. Very "Hands on" . You are taught how programming languages work by actually building intrepreters (in other words an Operational Semantics is used) .This is the best way to learn .
3.Environments and Continuations are explained extremely well.
4.Lots of exercises which explore design alternatives . For example the main flow deals with lexical binding of variables, with dynamic binding left as an exercise.
1. A certain knowledge of scheme (let letrec, cond) etc is assumed (The First edition was better in this respect and was more self contained)
2.The writing is sometimes unnecessarily dense with long sentences and slighly disjonted paragraphs.
3.some essential features of a language design (eg: memory management ) are skipped entirely.While this is understandable from the pov of reducing the length of the book, it also means that one needs to read supplementary material before one can write real life interpreters.
4.Some parts of the interpretation/compilation process are skipped entirely or treated through "magic". For example the book provides practically no explanation of lexing or parsing and some "magic " code (SLLGEN) is used .The examples for using this framework are thoroughly inadequate.It is better to skip using this framework and just use list syntax and the read functionality of scheme .
With all its faults (which will probably get fixed in the next edition ) this is an incredible book and should be part of the library of every programmer interested in learning how languages work. As far as i know there isn't a single other book that can do better in conveying how various features of languages really work and interact .
While this book may not be suitable for an undergraduate course of study(withoout an excellent teacher to help students get ove r the difficult bits) it is ideal for the self taught programmer .
If you don't mind reading extra material/browsing the web to supplement this book, just buy it.
Teachers love the book because it takes a unified, minimalist approach, using the simple, elegant language Scheme. Students seem to hate the book for the same reason, complaining that the details of Scheme divert attention from the concepts themselves.
This situation makes it essential to supplement the book with programming assignments in actual languages (Java, ML, Prolog), so students can see what all the trouble is for, and what's really exciting about the ideas in the book. Otherwise, reading this book is like learning how to build a car without ever having seen one!
The book covers the operational semantics of the most important features in programming languages and give users a clear understanding of the infrastructure of programming langauges along the way. Highly recommended.
See [...] for a course based on this book.
Friedman used it sparingly, as did I. It's full of formal programming language theory and enough EBNF grammars to satisfy the purist while confusing the practioner. To Friedman's credit, he is realistic about the book's audience (graduate,doctoral, and post-doctoral) and about the prevalence of Scheme outside of academia.
The chapters on continuations and object oriented programming, however, are quite accessible and interesting reading. Though he doesn't do it much in the book, Friedman decoupled the course from Scheme several times and we examined everything from C's setjmp, longjmp mechanisms to C++'s virtual method lookup implementation.
Word of advice to those taking a course taught by Friedman: Don't miss a single lecture or you will be hopelessly lost.
Buy this book if you are interested in formal programming language theory. Don't buy this book if you are interested in learning a specific language or are put off by a dense, rigorous approach to learning programming languages. In any event, best
of luck with your studies.