From: SonOfLilit Date: 2007-02-12T21:10:59+09:00 Subject: Re: Getting my sister to learn programming ------=_Part_53201_30245535.1171282249821 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline On 2/11/07, M. Edward (Ed) Borasky wrote: > > If you don't mind switching from Lisp to Scheme, there are lots of great > resources. Scheme is pretty much the ultimate pedagogical/academic > language. I don't know what, if anything, is available in Hebrew, but > the wealth of information in English on Scheme and the underlying > computer science is phenomenal. "The Little Schemer" is one way to get > started. "drscheme" from PLT is another. I'd personally go with > "drscheme"; I found "The Little Schemer" hard to read. Check out > http://www.plt-scheme.org/ I was talking about the Lisp FAMILY, of course, so scheme is included. I would have gone for DrScheme, I think, as it is the only sane choice I know except for emacs+SLIME - and as much as I like this one, I don't think my sister will. Well ... I guess if you're talking about programming languages, I'd pick > Scheme/Lisp or Ruby. But the natural language issue -- English vs. > Hebrew -- is obviously a big factor here. You've mentioned it enough > times that perhaps you should be teaching her English as well as > programming. One way to ease into that might be to find some open source > natural language processing software and break it up into small pieces. > The open source world seems to me to be way ahead of the commercial > world in natural language processing. It's not my area of expertise, but > I'm pretty sure there's quite a bit of natural language processing > software written in Lisp, if not Scheme, and there are also some things > in Ruby. Getting her to learn English is part of the fun. Well, her English is OK on a basic language - she can have a conversation in English and could eventually understand every text I throw at her, I think (school ruined it a bit - you know how schools work). But she'd have difficulty studying from an English book / tutorial, and English names in APIs wouldn't feel natural to her, so she'd have to memorize every word. That's why I said Ruby's advantage of very clear and obvious names would be lost. I'd stay away from "toy" languages like Logo, and I'd stay away from > Squeak. As far as I can tell she's smart enough to work in a real > language -- Logo just *isn't* a real language. It's designed for kids > and she'll outgrow it quickly. In fact, I'm guessing she already *has* > outgrown it! And Squeak is, as you've noticed, just plain bizarre. I've > been programming since ... well, let's just say you had to be a graduate > student to get your hands on a machine with core memory and solid-state > logic. :) And I found Squeak so counter-intuitive that I gave up on it > after a week. Smalltalk is a wonderful language, but Squeak is just > plain weird. Logo seems quite real to me (I'm talking about Brian Harvey's UCBLogo). He shows how to do some very nifty things in his books about it, like for example a BASIC to Logo translator: http://www.cs.berkeley.edu/~bh/v2ch6/basic.html As a matter of fact, Logo (a language I was first taught to "use" for turtle graphics at third grade but totally forgot about and rediscovered today as an experienced programmer) seems to me like having a relationship with Lisp like that of Ruby with Smalltalk: Take the underlying engine and make it look like simple English. I especially like the keyword "to" used for function definition, as in "to draw a triangle, repeat three times doing this and that". If only it had a FFI, I'd have no doubts and teach her Logo. Without one, I'm afraid to say it's a VERY limited language (AFAIK it doesn't have PEEK and POKE, BASIC's FFI in the times of ASM reign). That leaves Ruby or Scheme. Ruby is more natural, Scheme is simpler. Part of Ruby's "natural" advantage is lost because of language mismatch. Ruby's libraries are allowed to have simpler APIs, but the cost is in the complication of implementing such APIs. I know Ruby far better than Scheme (have only played a bit with the latter). What do you think? ------=_Part_53201_30245535.1171282249821--