This book provides students with a deep, working understanding of the essential concepts of programming languages. Most of these essentials relate to the semantics, or meaning, of program elements, and the text uses interpreters (short programs that directly analyze an abstract representation of the program text) to express the semantics of many essential language elements in a way that is both clear and executable. The approach is both analytical and hands-on. The book provides views of programming languages using widely varying levels of abstraction, maintaining a clear connection between the high-level and low-level views. Exercises are a vital part of the text and are scattered throughout; the text explains the key concepts, and the exercises explore alternative designs and other issues. The complete Scheme code for all the interpreters and analyzers in the book can be found online through The MIT Press Web site. For this new edition, each chapter has been revised and many new exercises have been added. Significant additions have been made to the text, including completely new chapters on modules and continuation-passing style. Essentials of Programming Languages can be used for both graduate and undergraduate courses, and for continuing education courses for programmers.
Cited By
- Buszka M and Biernacki D Automating the Functional Correspondence Between Higher-Order Evaluators and Abstract Machines Logic-Based Program Synthesis and Transformation, (38-59)
- Aloor R and Nandivada V Efficiency and expressiveness in UW-OpenMP Proceedings of the 28th International Conference on Compiler Construction, (182-192)
- Jeong E, Jeong J, Kim S, Yu G and Chun B Improving the expressiveness of deep learning frameworks with recursion Proceedings of the Thirteenth EuroSys Conference, (1-13)
- Monteiro F, Januário F, Cordeiro L and de Lima Filho E (2017). BMCLua, ACM SIGSOFT Software Engineering Notes, 42:3, (1-10), Online publication date: 5-Sep-2017.
- Van Es N, Nicolay J, Stievenart Q, D'Hondt T and De Roover C A performant scheme interpreter in asm.js Proceedings of the 31st Annual ACM Symposium on Applied Computing, (1944-1951)
- Perugini S and Buck J A language-based model for specifying and staging mixed-initiative dialogs Proceedings of the 8th ACM SIGCHI Symposium on Engineering Interactive Computing Systems, (204-216)
- Lasseter J The Interpreter In An Undergraduate Compilers Course Proceedings of the 46th ACM Technical Symposium on Computer Science Education, (168-173)
- Zhai K, Townsend R, Lairmore L, Kim M and Edwards S Hardware synthesis from a recursive functional language Proceedings of the 10th International Conference on Hardware/Software Codesign and System Synthesis, (83-93)
- Roth B, Jahn M and Jablonski S On the way of bottom-up designing textual domain-specific modelling languages Proceedings of the 2013 ACM workshop on Domain-specific modeling, (51-56)
- Morazán M Beautiful Imperative Code Essays Dedicated to Rinus Plasmeijer on the Occasion of His 61st Birthday on The Beauty of Functional Code - Volume 8106, (273-284)
- Bainomugisha E, Vallejos J, De Roover C, Carreton A and De Meuter W Interruptible context-dependent executions Proceedings of the ACM international symposium on New ideas, new paradigms, and reflections on programming and software, (67-84)
- Herzeel C and Costanza P Dynamic parallelization of recursive code Proceedings of the ACM international conference on Object oriented programming systems languages and applications, (377-396)
- Herzeel C and Costanza P (2010). Dynamic parallelization of recursive code, ACM SIGPLAN Notices, 45:10, (377-396), Online publication date: 17-Oct-2010.
- Yu W Fault handling and recovery in decentralized services orchestration Proceedings of the 12th International Conference on Information Integration and Web-based Applications & Services, (98-105)
- Brown R, Shoop E, Adams J, Clifton C, Gardner M, Haupt M and Hinsbeeck P Strategies for preparing computer science students for the multicore world Proceedings of the 2010 ITiCSE working group reports, (97-115)
- Fenwick J and Gross L Lazy evaluation of PDE coefficients in the EScript system Proceedings of the Eighth Australasian Symposium on Parallel and Distributed Computing - Volume 107, (71-76)
- Anton K and Thiemann P Towards deriving type systems and implementations for coroutines Proceedings of the 8th Asian conference on Programming languages and systems, (63-79)
- Siek J and Vachharajani M Gradual typing with unification-based inference Proceedings of the 2008 symposium on Dynamic languages, (1-12)
- Felleisen M (2008). Why teach programming languages in this day and age and how to go about it, ACM SIGPLAN Notices, 43:11, (59-61), Online publication date: 30-Nov-2008.
- Wand M and Friedman D (2008). Programming languages, ACM SIGPLAN Notices, 43:11, (133-135), Online publication date: 30-Nov-2008.
- Danvy O From reduction-based to reduction-free normalization Proceedings of the 6th international conference on Advanced functional programming, (66-164)
Index Terms
- Essentials of Programming Languages, 3rd Edition