Nothing Special   »   [go: up one dir, main page]

skip to main content
Skip header Section
Programming languages: an interpreter-based approachJanuary 1990
  • Author:
  • Samuel N. Kamin
Publisher:
  • Addison-Wesley Longman Publishing Co., Inc.
  • 75 Arlington Street, Suite 300 Boston, MA
  • United States
ISBN:978-0-201-06824-5
Published:03 January 1990
Pages:
640
Skip Bibliometrics Section
Reflects downloads up to 02 Oct 2024Bibliometrics
Abstract

No abstract available.

Cited By

  1. ACM
    Clements J and Krishnamurthi S Towards a Notional Machine for Runtime Stacks and Scope: When Stacks Don’t Stack Up Proceedings of the 2022 ACM Conference on International Computing Education Research - Volume 1, (206-222)
  2. ACM
    Lippe T, Smith T, Pelsmaeker D and Visser E A scalable infrastructure for teaching concepts of programming languages in Scala with WebLab: an experience report Proceedings of the 2016 7th ACM SIGPLAN Symposium on Scala, (65-74)
  3. ACM
    Ramsey N On teaching *how to design programs* Proceedings of the 19th ACM SIGPLAN international conference on Functional programming, (153-166)
  4. ACM
    Ramsey N (2014). On teaching *how to design programs*, ACM SIGPLAN Notices, 49:9, (153-166), Online publication date: 26-Nov-2014.
  5. Xing C (2009). How interpreters work, Journal of Computing Sciences in Colleges, 25:2, (159-166), Online publication date: 1-Dec-2009.
  6. ACM
    Ortiz A Language design and implementation using ruby and the interpreter pattern Proceedings of the 39th SIGCSE technical symposium on Computer science education, (48-52)
  7. ACM
    Ortiz A (2008). Language design and implementation using ruby and the interpreter pattern, ACM SIGCSE Bulletin, 40:1, (48-52), Online publication date: 29-Feb-2008.
  8. ACM
    Leavens G (2008). Use concurrent programming models to motivate teaching of programming languages, ACM SIGPLAN Notices, 43:11, (93-98), Online publication date: 30-Nov-2008.
  9. ACM
    Velázquez-Iturbide J A programming languages course for freshmen Proceedings of the 10th annual SIGCSE conference on Innovation and technology in computer science education, (271-275)
  10. ACM
    Velázquez-Iturbide J (2005). A programming languages course for freshmen, ACM SIGCSE Bulletin, 37:3, (271-275), Online publication date: 1-Sep-2005.
  11. ACM
    Durham A, Sussumu E and da Conceição A A framework for building language interpreters Companion of the 18th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, (191-196)
  12. Bloss A Language processors Encyclopedia of Computer Science, (955-958)
  13. ACM
    Haynes C Experience with an analytic approach to teaching programming languages Proceedings of the twenty-ninth SIGCSE technical symposium on Computer science education, (350-354)
  14. ACM
    Haynes C (1998). Experience with an analytic approach to teaching programming languages, ACM SIGCSE Bulletin, 30:1, (350-354), Online publication date: 1-Mar-1998.
  15. ACM
    Naps T and Stenglein J Tools for visual exploration of scope and parameter passing in a programming languages course Proceedings of the twenty-seventh SIGCSE technical symposium on Computer science education, (305-309)
  16. ACM
    Naps T and Stenglein J (1996). Tools for visual exploration of scope and parameter passing in a programming languages course, ACM SIGCSE Bulletin, 28:1, (305-309), Online publication date: 1-Mar-1996.
  17. ACM
    Kim M (1995). A new iteration mechanism for the C++ programming language, ACM SIGPLAN Notices, 30:1, (20-26), Online publication date: 3-Jan-1995.
  18. ACM
    Clifton M (1995). Self-Assessment Procedure XXIII, Communications of the ACM, 38:5, (89-97), Online publication date: 1-May-1995.
  19. ACM
    Barr J and King L (1995). An environment for interpreter-based programming language projects, ACM SIGCSE Bulletin, 27:1, (159-162), Online publication date: 15-Mar-1995.
  20. ACM
    Barr J and King L An environment for interpreter-based programming language projects Proceedings of the twenty-sixth SIGCSE technical symposium on Computer science education, (159-162)
  21. ACM
    Schmidt W and Nilsen K (1994). Performance of a hardware-assisted real-time garbage collector, ACM SIGPLAN Notices, 29:11, (76-85), Online publication date: 1-Nov-1994.
  22. ACM
    Schmidt W and Nilsen K Performance of a hardware-assisted real-time garbage collector Proceedings of the sixth international conference on Architectural support for programming languages and operating systems, (76-85)
  23. ACM
    Vazquez F Selecting a software development process Proceedings of the conference on TRI-Ada '94, (209-218)
  24. ACM
    Schmidt W and Nilsen K (1994). Performance of a hardware-assisted real-time garbage collector, ACM SIGOPS Operating Systems Review, 28:5, (76-85), Online publication date: 1-Dec-1994.
  25. ACM
    Placer J (1992). Integrating destructive assignment and lazy evaluation in the multiparadigm language G-2, ACM SIGPLAN Notices, 27:2, (65-74), Online publication date: 1-Feb-1992.
  26. ACM
    King K The evolution of the programming languages course Proceedings of the twenty-third SIGCSE technical symposium on Computer science education, (213-219)
  27. ACM
    King K (1992). The evolution of the programming languages course, ACM SIGCSE Bulletin, 24:1, (213-219), Online publication date: 1-Mar-1992.
  28. ACM
    Gfeller M Walks into the APL design space Proceedings of the international conference on APL, (70-77)
  29. ACM
    Gfeller M (2019). Walks into the APL design space, ACM SIGAPL APL Quote Quad, 23:1, (70-77), Online publication date: 15-Jul-1992.
Contributors
  • University of Illinois Urbana-Champaign

Reviews

Randal P. Leavitt

This clearly written review of the fundamental ideas that underlie interpreted programming languages devotes a chapter each to LISP, APL, Scheme, SASL, CLU, Smalltalk, and Prolog. The discussion moves smoothly through the evolution of language design, highlighting the improvements introduced by each new language. LISP uses large data values called S-expressions and recursive function definitions. APL demonstrates how matrix operators combined with reduction and compression can eliminate most of the need for iteration and recursion. Scheme shows how functions can be first-class values and demonstrates the importance of static scope rules. SASL provides new expressive power based on lazy evaluation. CLU illustrates how strong type checking can be combined with encapsulated type definitions to improve the verifiability of programs. Smalltalk brings the reader up to the present with examples of message-passing and objects, class protocols, methods, class hierarchies, inheritance, and dynamic binding. Prolog gives us a taste of something completely different as a logic programming language that relies on unification and backtracking to search for logical sequences in a collection of Horn clauses. The last two chapters of the book discuss implementation issues: compilation and memory management. Along the way the author provides a few interesting diversions with brief but accurate overviews of ML, lambda calculus, Ada, and C++. BASIC, the world's most widely used interpreted language, is never mentioned. The source code for a rudimentary interpreter written in Pascal appears in Appendix B of the book and is available via electronic mail. Many of the exercises require the student to work with the source code. Each chapter begins with a discussion of the new language's key ideas and then explains how the interpreter can be modified to provide these features. Several exercises take the student a bit further by specifying other extensions and variations, while other exercises ask the student to apply the modified interpreter to solve problems using the new capabilities. As the author states, this book is a suitable text for an applied course in programming language concepts that emphasizes interpretation as opposed to compilation. Its intended audience includes those who have at least an elementary understanding of programming and a working familiarity with Pascal. Many of the exercises require access to a Pascal compiler and interactive use of a computer to run the interpretation programs developed as solutions. Using this approach, this book is clear enough to be a self-study guide for anyone interested in programming language fundamentals. Many practicing software professionals would find the chapter exercises interesting. This book fulfills its basic purpose well. Its length is about right for a semester course. The material is a bit challenging but not inaccessible. The author amplifies each new idea with several examples that help to make the abstract points concrete. Appropriate references for further reading close out each chapter, along with a concise summary of the chapter's material and a glossary giving precise definitions of the important terms introduced. The book would not work, however, as a text for students interested specifically in the languages reviewed. The author only presents some of the features of these languages and shows how these facilities can be provided by an interpreter. The book teaches the student something about APL; it does not teach APL directly. Given an appreciation of this distinction, this book could serve as a senior course text. The best feature of this book is its organization. It contains a comprehensive index and bibliography. Every chapter builds on the previous material in a very natural manner. New concepts unfold as extensions or improvements of the capabilities presented earlier. Each chapter describes how to extend the interpreter to provide these features, giving several examples of how the new features work, and a subsection reviews the language under discussion as it really is. The further reading notes are up-to-date and selective, focusing on the landmarks in the programming language literature. The author briefly describes each reference to help the student navigate through this material. Complete and accurate reference sections such as these are not easy to put together. This attention to relevance, detail, and completeness can be seen throughout the book. An instructor using this text should be aware of a few minor presentation problems. The book is divided into six parts but the part titles do not appear in the table of contents. Another issue is the use of the letter l and the digit one. The author often uses the variable name l in examples that also increment counters by one. The difficulty of distinguishing between l and one when reading these examples for the first time is disconcerting. The binding is sturdy, and the type is small but clear on high quality, low glare paper. I did not find any typographical errors. Chapter headings and subheadings appear on every page, making it easy to find sections quickly. The notation used is clear with a minimum of special symbols. Overall, this work is excellent. It is a well-organized, informative, up-to-date book that I have already recommended to others with an interest in this field.

Access critical reviews of Computing literature here

Become a reviewer for Computing Reviews.

Please enable JavaScript to view thecomments powered by Disqus.

Recommendations