Concepts Techniques And Models Of Computer Programming

Also referred to as TheOzBook when it's clear from context that this does not refer to L. Frank Baum's TheWizardOfOz.

Quoting from http://www.info.ucl.ac.be/people/PVR/book.html :

The book is organized around programming concepts. It starts with a small language containing just a few concepts. It shows how to design, write programs, and reason in this language. It then adds concepts one by one to overcome limitations in expressiveness. In this way, it situates all major programming paradigms in a uniform framework. More than twenty paradigms are given, all represented as subsets of the MultiparadigmLanguage Oz [OzLanguage]. We find that all have their place: "more is not better (or worse) than less, just different".

Prior to publication, there was an online draft available from the book's website. Although the publishers and authors might disapprove, this draft is still accessible through the WaybackMachine.

In fact, there still is: http://www.ulb.ac.be/di/rwuyts/INFO020_2003/vanRoyHaridi2003-book.pdf (BrokenLink)

Info - http://www.info.ucl.ac.be/~pvr/book.html

There is now a wiki dedicated to CTM: http://www.codepoetics.com/wiki


The nickname "The Oz Book" is appropriate, both because OzLanguage (which the authors, along with several others, developed) is the primary language used in the book, and because of the inevitable comparisons with TheWizardBook (StructureAndInterpretationOfComputerPrograms). Like SiCp, CTMCP is first and foremost a book on programming, not on Oz or Scheme or anything else. And if SiCp is the reigning king of such books, ConceptsTechniquesAndModelsOfComputerProgramming is a worthy challenger to that particular throne. (More accurately, this book deserves to be on the same shelf as SiCp, in my opinion -- and I definitely would read both of them, along with ObjectOrientedSoftwareConstruction).

There are a few concepts in this book which receive better coverage here than in SiCp; namely:

Conversely, traditional functional programming is better covered in SiCp, as are the contents of SiCp's chapter 5, dealing with language implementations and compilers.

One good point in favor of this book (compared to many programming texts and well-known personalities) is the authors' careful avoidance of dogma. Although OzLanguage features prominently in the book, this book doesn't make extravagant claims about Oz (or engage in specious criticism of other languages -- if anything, the authors are too nice). Compare this to ObjectOrientedSoftwareConstruction, where an otherwise excellent book is diminished due to the fact that it frequently reads like a sales brochure for EiffelLanguage. Nor do the authors engage in "paradigm-bashing". While the authors clearly do have a favorite paradigm, all of the paradigms presented are discussed in a reasonable fashion, with strengths and weaknesses cataloged and analyzed. When the authors do criticize something (SharedStateConcurrency, a technique which seems to dominate programming these days, receives quite a bit of criticism), it makes you want to sit up and pay attention.

In the final analysis, the authors recommend use of whatever paradigm works, including several different ones in the same problem. A welcome relief from several other authors I can think of, each promoting their own One True Way.

Highly recommended.

-- ScottJohnson

Agreed on all counts. Wonderful book, very insightful, strangely easy to read (haven't figured that out yet), very unusual in many respects. There really isn't any other book out there that is even vaguely like it in subject coverage. I think it's a natural complement to SiCp. A must-read even if one isn't interested in SiCp, too. I've quoted it multiple times on various pages here. -- DougMerritt


Links to discussion of CTM on the LambdaTheUltimate weblog: <http://www.codepoetics.com/wiki/index.php?title=Discussion:LtU>


Also see StructureAndInterpretationOfComputerPrograms and LargeAndSmallLanguages.


CategoryBook


EditText of this page (last edited November 14, 2011) or FindPage with title or text search