[racket] advice given to friend trying Racket

From: Geoffrey S. Knauth (geoff at knauth.org)
Date: Wed Jan 4 07:52:01 EST 2012

== A G+ friend learning Lisp decided to try Racket.  I gave him this advice, which I hope does not have errors:

I tend to write more Racket programs than in Common Lisp. I read the Steve Yegge blog entry above [1], and it is mostly true if a little overblown, but because of it I have to mention that if you are going to use SICP as a text with Racket, there are subtle differences between the Scheme in the text and the Scheme in Racket. These differences were address by Neil Van Dyke at http://www.neilvandyke.org/racket-sicp/ . Don't worry about it for now, just keep that in mind. Besides loving the technology of Racket, and the constant, forward, progressive, active improvement that makes DrScheme/Racket better year after year, I love the community. You can ask a question at users at racket-lang.org [you'll have to subscribe to post], and you'll get a friendly response, usually from the most knowledgeable professors, graduate students or practitioners. In this era of nastiness and dysfunction in politics and in some areas of the Internet, I find the Racket community a small garden of Eden of sanity and constructivism. While SICP is an awesome, classic text, in the Racket community, they'll probably point you to http://www.htdp.org/ and http://www.ccs.neu.edu/home/matthias/HtDP2e/ which specifically build your skills using Racket as an environment. Having read SICP, when I first saw HtDP I thought "Isn't this rather simple?" but I was wrong. It starts with simple and then builds up a student's ability to handle complexity without losing control of the development process. It puts a lot of emphasis on something called The Design Recipe, which sounded hokey to me at first, but when I went to my first [of several] Racket summertime courses for instructors and I was shown what The Design Recipe was, I realized, even as someone who's been programming for 35 years, that rather than code a solution to something complex in say, an hour, after 15-20 minutes, when I thought I was a third done, I was actually and suddenly completely done, sometimes almost feeling like magic. It basically puts a high emphasis on thinking and designing first, writing test cases very early, picking the right program structure, and then filling in the blanks and expanding them in a few places. Following the Design Recipe, not only was I often "suddenly done," but because my tests were written before I started coding the meat of a solution, I had (and continue to have) high confidence that my program works and will continue to work (or alert me quickly to new errors) should I make any "enhancements" down the road.

[1] http://steve-yegge.blogspot.com/2006/04/lisp-is-not-acceptable-lisp.html

Posted on the users mailing list.