
Essentials of programming languages
by Daniel P. Friedman · first published 1992
76mentions
43recommended by
48HN commenters
2008–2026first – last mentioned
90% recommend10% neutral
Why HN recommends it
Scheme-based walk through building interpreters and the fundamentals of language design, seen as the natural follow-up to SICP. Suits readers who want a coherent, hands-on route into language implementation.
Summarised by Claude from recommending comments
Affiliate links. As an Amazon Associate I earn from qualifying purchases.








…programming languages (and compilers), which is their semantics. We have much better theories of semantics now than we had in the 1970s when the traditional compilers course was being laid out. Books like Essentials of Programming Languages can be wonderful introductions to the fuzzier ones, and there's a lot of work in things like Coq and Idris to come up with tractable formalizations. But you don't need much of a theory of semantics to…
on “Let's make a Teeny Tiny compiler” ↗This is a great essay. The approach of converting scheme code into C (and possibly assembly) via series of correctness preserving transforms is explained in great detail in Friedman and Wand's "Essentials Of Programming Languages". Get the first edition if you can. It is more comprehensive then the second edition. The third edition should be out in a few weeks so you may want to wait for that, if you plan to buy book.
on “Is Scheme Faster than C?” ↗…Turing Omnibus Edsger Dijkstra, A Discipline of Programming Richard Feynman, The Feynman Lectures on Computation Friedman and Felleisen, The Little Schemer Friedman and Wand and Haynes, Essentials of Programming Languages [1st edition] James F. Gimpel, Algorithms in Snobol4 Paul Graham, On Lisp Philip Greenspun, Philip and Alex's Guide to Web Publishing Grune and Jacobs, Parsing Techniques: A Practical…
on “Which programming book you just couldn’t stop reading from start to end?” ↗…(Author), Duane Bibby (Drawings), Gerald J. Sussman (Foreword). The Little Schemer. Programming language principles & implementation books: Daniel P. Friedman, Mitchell Wand, and Christopher T. Haynes. Essentials of Programming Languages. Shriram Krishnamurthi. Programming Languages: Application and Interpretation. Matthias Felleisen, Robby Findler, and Matthew Flatt. Semantics Engineering with PLT Redex These are all by pretty much…
on “Wadler's critique of SICP (1987)” ↗I got a lot out of "Essentials of Programming Languages" (2nd edition, at the time) by Friedman, Wand and Haynes. It has a great quote from Hal Abelson in the foreword, too: > Perhaps the whole distinction between program and programming language is a misleading…
on “Urn: A Lisp implementation for Lua” ↗…waaaaaaay too junior at the time but I'll always remember that interview fondly. My background was more in math and my interests were in PL theory, so he quizzed me on the lambda calculus, and turned me onto Essentials of Programming Languages by Friedman & Wand (and off the bad compiler books I had been reading previously), and pointed me towards material for further study in programming languages and lambda calculus. The interview was still…
on “Why I still Lisp” ↗The best book to follow up SICP is Essentials of Programming Languages, by Friedman, Wand, and Haynes. It uses Scheme to show how the fundamentals of programming languages are built, and both in its form and its content, it seems a direct continuation from SICP. After you've…
on “Ask HN: After SICP, what next?” ↗Essentials of Programming Languages. Engineering a Compiler. Managing Gigabytes. Advanced Programming in the Unix Environment Unix Network Programming On Lisp Advanced Compiler Design and Implementation Concepts, Techniques and Models…
on “Ask HN: What are your favorite programming books?” ↗Essentials of Programming Languages (EOPL) http://www.amazon.com/Essentials-Programming-Languages-Danie... and The Seasoned Schemer as well http://www.amazon.com/Seasoned-Schemer-Daniel-P-Friedman/dp/...
on “The Development of Chez Scheme [pdf]” ↗It sounds like you're more interested in programming languages in general. You might find these books interesting: Essentials of Programming Languages http://www.amazon.com/Essentials-Programming-Languages-Danie... The Little Schemer http://www.amazon.com/Little-Schemer-Daniel-P-Friedman/dp/02...
on “Why PHP Was a Ghetto” ↗…include: The Little Schemer and Structure and Interpretation of Computer Programs. A good sample project might be to build some sort of language intepreter. For Scheme-based ideas, take a look at the book Essentials of Programming Languages. One of the early projects in that book is to build an arithmetic expression evaluator; by that point, you should be well on your way to thinking functionally.
on “Ask HN: The best plan to learn the functional programming paradigm” ↗…goes through various virtual machine implementations and by the end of it you'll understand precisely how pointers, stacks, arrays, etc. all work in various programming languages. Another good book is "Essentials of Programming Languages": http://www.amazon.com/Essentials-Programming-Languages-Danie... but I haven't put enough time into that one to say whether it will benefit you or not. If the previously mentioned online resources and…
on “What should a self-taught programmer study?” ↗Also Essentials of Programming Languages (also by Dan Friedman), which talks specifically about language design and compilation/transformations.
on “Books Programmers Don't Really Read (2008)” ↗Love lisp in small pieces! Beautiful book. Also enjoyed Essentials of Programming Languages by Friedman and Wand -- very SICPish into to programming language implementation in that it weaves together this narrative with uniting underlying themes rather than bombarding the reader with seemingly…
on “Ask HN: What's a starting point for learning how to write programming languages?” ↗That list is...not bad, as far as it goes. I would suggest Essentials of Programming Languages by Daniel P. Friedman and Mitchell Wand instead of (or even better, in addition to) Crafting Interpreters. The former is about languages, the latter compilers (or rather interpreters). They are complementary.…
on “Teach Yourself Computer Science” ↗