4 ms·
How to Design Programs[1], while not an introduction to Racket per se, is a wonderful way to get started with the Lisp-family of languages and with computer pro
by michaelsbradley 12y ago
How to Design Programs[1], while not an introduction to Racket per se, is a wonderful way to get started with the Lisp-family of languages and with computer programming in general.
Once you work all the way through Part 1 of the book, you really do get a sense that Felleisen, et al. are trying to teach you the why and how of good program design, not simply introduce you to a particular syntax.
A small study group has been meeting in St. Louis since mid October 2014[2]. Slowly but surely, we're working our way through HtDP2e and learning a lot from the book and each during as we go along.
[1] http://www.ccs.neu.edu/home/matthias/HtDP2e/ http://www.ccs.neu.edu/home/matthias/HtDP2e/
[2] http://www.meetup.com/STL-Racket/ http://www.meetup.com/STL-Racket/
- hga 12y ago"not simply introduce you to a particular syntax" I don't think Felleisen, et al. get that much credit for this, except of course in having the uncommon wisdom in choosing The One True Way ^_^, which for instruction is the simple Lisp dialect of Scheme. There's almost no syntax to teach, e.g. literals (e.g. numbers and strings), atoms, lists, and special forms like define/lambda and if. Which of course is a major reason to use a Lisp for introductory programming, you spend seconds to minutes instead of weeks teaching syntax (of course the students spend a bit more time in the lab learning how to use the editor to properly indent the code so it can be comprehended, but isn't that pretty much what you must do with Python??). BTW, a counterargument I recently came across in the great SICP vs. HoDP conflict is that the latter has no "magic". Does that resonate with you? (I can't comment having started reading SICP back when it was a lively Technical Report.)
- michaelsbradley 12y agoRe: syntax, what you say is true. There was a period late last night when HN comments could not be updated by their authors. Almost right away, I realized I could have expressed my point better: "...not simply introduce you to the authors' preferred language." I have not spent much time with SICP, so I can't really make a comparison. But I can speculate a little: the point of HtDP is to lay the foundation for and then form the reader-student according to a systematic "design recipe" that is expanded and refined as one works through the book. Many of the deeper ideas and surprises of computer programming are not explored, as they are in SICP, so fans of the latter would probably find HtDP to be a "flatter" learning experience.
- hga 12y ago"...not simply introduce you to the authors' preferred language" Heh, but that doesn't work either ^_^. Sussman was the co-inventor of Scheme and still loves it, Ableson I don't know, and don't Felleisen et. al. love the syntax and Scheme at least to a substantial degree? (I don't know anything about Racket, Felleisen and company essentially ended up doing a drive-by shooting of Scheme with R6RS, leaving a very bad taste in my mouth about them, their technical judgement and skill, language aesthetics, etc. ... but I gather I should look at what they've done.)
- michaelsbradley 12y ago"Heh, but that doesn't work either..." Well, the point of my original comment may have become obscured, I'm not sure. It was that HtDP is not so much a book about Racket/Lisp/Scheme, as it is a book that aims primarily to impart sound fundamentals for the design of computer programs, regardless of the language used. And as I wrote previously, that becomes quite apparent by the end of Part 1, when the "design recipe" has seen its second major restatement. By the way, I am only familiar with the 2nd edition of HtDP. I can't really comment on the 1st edition, and it's possible that it gives a different impression.
- hga 12y agoAh, I get you. Yeah, SICP, going from the 2nd Edition because my previous edition copies were tossed or whatever, is that too, but aimed at teaching different things. Except for the 4th Chapter, Metalinguistic Abstractions, which of course introduces the metacircular interpreter ... but if that's "The Maxwell Equations of CS".... That chapter has other treats, and ends with logic programming. And per Wikipedia and my general knowledge: "Before SICP, the introductory courses were almost always filled with learning the details of some programming language, while SICP focuses on finding general patterns from specific problems and building software tools that embody each pattern." But of course, even if we agree this is the way to teach introductory courses, there is much debate on what to teach, with MIT abandoning SICP in the post-doc.com crash panic including a crash in enrollment. (More than halved after being a steady 2/5th of the undergraduate body for decades. It's gone back up, BTW, along with Stanford's. CMU only accepts 135 students into its program, and UCB, being a state school, probably also has limits, explicit or implicit.)