Path: utzoo!attcan!uunet!clyde.concordia.ca!news-server.csri.toronto.edu!helios.physics.utoronto.ca!ists!yunexus!oz@sprawl.yorku.ca From: oz@sprawl.yorku.ca (Ozan Yigit) Newsgroups: comp.lang.scheme Subject: Re: Reference request: Prog.Lang, An Interp-Based Appr. Keywords: review Message-ID: <1990Sep19.111312@sprawl.yorku.ca> Date: 18 Sep 90 14:43:12 GMT References: <1990Sep18.213646.5209@athena.mit.edu> Sender: news@yunexus.YorkU.CA Reply-To: oz@sprawl.yorku.ca (Ozan Yigit) Organization: York U. Communications Research & Development Lines: 46 I don't know if I posted this micro-review in this newsgroup, but the latest discussion of lisp syntax, and a strong scheme/lisp orientation of this book makes this a worthwhile re-post. enjoy. oz -------------- Programming Languages: An Interpreter-based Approach Samuel Kamin Addison-Wesley ISBN 0-201-06824-9 Source archive-site: cs.uiuc.edu [128.174.252.1] Source archive-directory: pub/kamin.distr This is a book that details programming languages through a study of Apl, Lisp, SmallTalk, Scheme, Prolog, Clu and Sasl. [some my favorites :-)] The really unique thing about the book is that it presents a simple (?) interpreter for each language that highlights the functionality of that language. Each interpreter is a modification of a simple language [functions, control structures, variables] interpreter with a lisp-like syntax. The choice of languages is especially interesting: these really cover an extraordinary collection of concepts, though there are some similarities between some of them, and they are bundled where they are related: scheme and sasl, clu and smalltalk etc. Discussion of each language is done in its lisp-like form [which nicely hides all the "real life" syntax crud that sometimes tends to overshadow the really interesting concepts -- nowadays known as C++ syndrome ;-)], with plenty of *complete* examples highlighting the characteristics of the language, followed by a section on implementation [i.e. modifications to the basic interpreter - each interpreter is written in pascal, and full source code included in the appendix] and a section on "the real language". The discussion of the languages is very thorough. The author does not short-change the reader just because there is complete source somewhere in the book. I was pleasantly surprised to find an excellent discussion of scheme compilation, garbage-collection strategies with source (mark-sweep, stop-copy, reference-counting), a section on lambda calculus, ML, C++ and few other gems. In my view, An excellent book. Good mix of theory and practice, and is understandable to boot, all with source. It is highly recommended. --------------