[plt-scheme] Has anyone read the book 'Concepts, Techniques, and Models of Computer Programming'?
I have read part of that book as well. Somewhat
similarly to SICP, CTM starts out at an elementary
level, and rapidly becomes more challenging. My
impression was that CTM is an updated, multi-paradigm
version of SICP covering similar topics at a similar
level of difficulty. It seems to assume a similar
level of logical sophistication as SICP. The chapters
in CTM apparently aim to be as complete as possible,
at the expense of at least sometimes being quite
verbose, unlike SICP, which is comparatively succinct
but occasionally leaves out important details of some
exercises. Some of the chapters in CTM can be very
long, and the book is quite thick. The book seems to
adopt the approach of leaving no academic stone
unturned. The book adopts a highly academic approach,
quite similarly to SICP.
One difficulty that I had in following that book was
the lack of a good tutorial for Oz on the Mozart/Oz
Web site. Oz, unlike Scheme, has a so-called "kernel
language," to which the rest of the full Oz language
can be reduced. The rest of the language is just
syntactic sugar for this kernel language. I witnessed
at least one case in which a subtle semantic question
about the Oz language was explained on the
mozart-users mailing list in terms of this kernel
language. However, compared to the syntactic sugar,
this kernel language can be more difficult to
understand.
Recently, I heard that the constraint-based music
composition system Strasheela
(http://strasheela.sourceforge.net/strasheela/doc/)
contains a significantly easier to follow tutorial
than the official Oz tutorial.
Benjamin L. Russell
--- Mark Engelberg <mark.engelberg at gmail.com> wrote:
> I have read it, and found it to be delightful. It
> is my favorite "survey of
> programming paradigms" textbook. I feel like I'm
> relatively knowledgable
> about these topics, and I still learned quite a bit.
>
> Things that stood out to me (keeping in mind it's
> been a few years since
> I've read it):
> 1. Really drives home the philosophy that
> programming languages should be
> designed in layers, where you can write most of your
> code in a layer that is
> easy to understand, but perhaps somewhat limited
> (e.g., functional
> programming), using other layers as needed when the
> extra expressiveness is
> truly necessary (e.g., stateful programming).
> 2. A running theme is that a designer of programming
> languages should create
> these layers by adding the minimum features
> necessary at the kernel language
> level to gain new expressiveness (I think they
> actually quoted Matthias on
> this language design principle). Then, once certain
> ways of using the new
> features becomes standard, add the necessary
> syntactic sugar to the language
> to support that way of doing things.
> 3. I've never used a language based around so-called
> logic variables. I
> found it really fascinating to see all the clever
> ways they can be used.
> That whole aspect of Mozart was new to me.
> 4. Great discussion of several different types of
> concurrency. Interesting
> discussion about how concurrency and state are
> connected in terms of what
> they can express.
> 5. Nice comparison of OO vs. more functional ways of
> doing ADTs.
> 6. Overview of distributed programming (I wish this
> part were more in-depth,
> but I liked what content was there).
> 7. Good illustration of declarative-style GUI
> programming. Interestingly,
> GUI frameworks have converged on this style since
> when I read the book
> (Silverlight, Flex, Laszlo), so now it's not such a
> novel idea to me.
> 8. I love the way Mozart does records.
> 9. I liked the brief explanation of how computation
> spaces can be used to do
> deduction/backtracking programs. It got me
> interested enough to read other
> articles and books on the subject.
>
> --Mark
>
> On Feb 4, 2008 7:47 AM, Grant Rettke
> <grettke at acm.org> wrote:
>
> > Has anyone read the book 'Concepts, Techniques,
> and Models of Computer
> > Programming' by
> > Peter Van Roy and Seif Haridi?
> >
> > What is your take on it?
> > _________________________________________________
> > For list-related administrative tasks:
> >
> http://list.cs.brown.edu/mailman/listinfo/plt-scheme
> >
> > _________________________________________________
> For list-related administrative tasks:
>
> http://list.cs.brown.edu/mailman/listinfo/plt-scheme
>