Everyone,<p>if you don't have time to read the book, do read
the sections with 'design' in their title. Compare
with Josh Bloch's apologia for the Java API and then
ponder why HtDP[2e] preps readers for OOP anyway. I
will try to clarify in HtDComponents (forthcoming,
eventually, if I live long enough) and HtDSystems
(ditto).<p>I chose small languages -- rejecting powerful Racket
features such as define-datatype and pattern matching --
precisely so that the thinking reader and student would
be able to adapt the design recipe to almost any language,
but especially the popular "scripting languages", the
wanna-be Lisps.<p>Once you program long enough, the design recipe will become
second nature and you won't notice it anymore. Well, until
some "guru" coins a slogan for some aspect of it -- say TDD
or Extreme Programming -- and you think "I have seen this
before, I just can't recall where." Conversely, I think I have
extracted what experienced programmers taught me about programming
and what has been at their and my finger tips for a long time.<p>If it helps some, great. If others know it all better, fine.<p>-- Matthias, at it since 1984<p>p.s. If the first sentence seems juvenile, you haven't been to a
physical book store in a while. When I see those books disappear,
the sentence will disappear too. In the meantime, I stand by its
essence.
From my cursory glance at the book, I always felt the title was misleading. It is more a general introduction to programming through Scheme, with a focus on good practice than a treatise on software architecture.
As a student having gone through a class for introductory programming with this book (1st addition), I can say this was the best way to get into programming, and the lessons in here lead to a beautiful understanding of computer programming.
<i>Eesh</i><p>What a horrible title. This is a book about how to program in scheme, not how to design programs. Nothing on architecture or common patterns. Nothing on how to abstract a domain or analyze a problem. Just <i>solutions</i> for common programming a tasks.<p>Not knocking it but its far from design.