tag:blogger.com,1999:blog-2086176560807445105.post2222316352581333782..comments2012-12-03T19:02:20.424-08:00Comments on egoless boots: Alternate Paths: Lispjohn personnahttp://www.blogger.com/profile/16449440713042469202noreply@blogger.comBlogger2125tag:blogger.com,1999:blog-2086176560807445105.post-16591409484703198862012-02-12T23:11:41.345-08:002012-02-12T23:11:41.345-08:00Thanks! Good to hear from someone who enjoyed the...Thanks! Good to hear from someone who enjoyed the path.john personnahttps://www.blogger.com/profile/16449440713042469202noreply@blogger.comtag:blogger.com,1999:blog-2086176560807445105.post-75099704371618865932012-02-11T21:52:19.481-08:002012-02-11T21:52:19.481-08:00I'll bite. Other than untutored messing about ...I'll bite. Other than untutored messing about with QBasic, Scheme was my first language. It was a course in the tradition of the Wizard Book (though not based on it explicitly).<br /><br />My first observation is that I don't think anyone left that class without understanding recursion, which is more than I can say about my first C class.<br /><br />The course was structured to rapidly progress towards the basics of runtime analysis, since the syntax (though a bit alien), is minimal enough that you can get coding and analyzing basic sort and search algorithms. I'm not sure how much your typical novice cares about either of these things, but for a future professional programmer, they are essential.<br /><br />The Wizard Book rapidly goes through details of programming language implementation, including fairly advanced topics like declarative programming and lazy evaluation. You could also address parallelism, etc.<br /><br />Scheme remains an enduring favorite language of mine, though, because unlike most other languages, I can hold an accurate *and* complete version of its semantics in my head. It's a language that fits in your pocket. For contrast, you can write single statements in many languages that use enough dusty corners that they're more or less impossible to figure out what they mean or do (an exemplar of this is typedefs in C---the complicated ones can be inscrutable).<br /><br />The fact that an intermediate programmer can write an interpreter for scheme, and therefore get a strong grasp on what goes on inside is a big part of this. The lisps are probably the only high level languages that can have this feature. Forth, for instance, is similarly compact, but feels very bare metal by comparison.mplnoreply@blogger.com