Fwd: Re: [Edu-sig] Why is Logo popular, while Python isn't? (was "using Python for a CS 2 course" )

Terry Hancock hancock@anansispaceworks.com
Thu, 21 Nov 2002 10:35:13 -0800


On Thursday 21 November 2002 05:11 am, Arthur wrote:
> I do understand that it is reasonable to believe that out-of-the-box Python
> is more appropriate for children than out-of-the-box Lisp, for example. Or
> any other mainstream programming language, for that matter.  But more
> appropriate than out-of-the box Logo?  Would a language related to Python,
> but not quite Python - be more optimum?

I think the attraction to teaching with Python is that it is indeed a 
mainstream language, and not a special "teaching language". Very few real 
applications are written in Logo (unless I'm really out of touch).

In fact, I once taught Logo turtle-graphics to 2nd graders, but I can't 
remember a single bit of it -- because *I* don't write programs in Logo.  I 
remember that it was very simple -- but I don't remember how to do it.

Some people are of the "more-the-merrier" school regarding languages -- 
especially people for whom programming is their career. But for other people, 
programming in their spare time, or as an additional tool for a career in 
another field (like science or teaching), there's a significant advantage to 
learning fewer languages.  Having the language you teach be a language you 
can actually use in later life is therefore an advantage (Why don't we teach 
American kids the Greek alphabet (or Hiragana or Cyrillic or IPA) to prepare 
them for learning the Roman characters later in life?  Sure, learning more 
languages makes each easier, but not easier than learning one.).

Because it's so inclusive of different programming techniques, Python is a 
very good general purpose solution -- it provides good access to several 
types of programming technique: procedural, object-oriented, and functional.  
With the right modules installed, it has tremendous reach -- scientific, AI, 
web/CGI programming, email interaction, etc.  For some people, it may be 
enough to know only Python.

So, I think it may well be worth using Python, even if it is slightly 
sub-optimal for teaching.  But I think it *does* have some non-intuitive 
features -- at least from a seven-year-old's point of view.  Personally I 
think the most obnoxious is the lack of simple loop constructs:

for i in range(10):
    print i

is not very intuitive to kids who don't know about domains and ranges -- 
fairly advanced math concepts, even if they seem trivial to me now.

for  1 < = i < 10:

would be more intuitive and Pyrex comes very close to this, with:

for i from 1 <= i < 10:

which Greg Ewing (Pyrex's author) proposed adding to mainstream Python.
I'm not sure why we need the "i from" cruft, but it is better.

And, of course, the ever popular, but Guido-despised "do-while" construct.
;-)

Not trying to start a flame war with these -- these have already been fought 
over for mainstream Python. I just bring them up, because they are teaching
obstacles for younger kids.  "Daddy, what's a range?"  I've also never quite 
figured out the "right" way to grab a little input from the user -- there are 
several ways to do this in Python, not "one obvious way".  This is 
surprisingly rarely needed in real programming applications, but in a 
teaching setting, it's very common.

Nevertheless, I had a little success starting my (now 2nd grade) son with 
Python 2.2's "turtle" module.  But he still has to just memorize some things:

from turtle import *

And why's it called a Pen?  Why not Turtle?  ;-)  My kids would want to
name a turtle, and that's where we get into object-oriented programming!
For my younger child, it ought to draw a turtle, too, instead of an 
impersonal arrow.  Maybe I'll try to improve it someday. :-)

Also, I think they were a bit underimpressed with the graphics -- spoiled on 
computer games, I guess.  They like designing game levels in Pingus or Rocks 
& Diamonds better.  They might still be a little too young for this -- I 
don't want to frustrate or bore them with it.

Still, for all that, I think Python is a pretty good starter language.  I 
certainly like it better than C, fortran, lisp, basic, cobol, or perl for 
that purpose.

Cheers,
Terry

--
Terry Hancock ( hancock at anansispaceworks.com )
Anansi Spaceworks  http://www.anansispaceworks.com


-------------------------------------------------------

-- 
--
Terry Hancock ( hancock at anansispaceworks.com )
Anansi Spaceworks  http://www.anansispaceworks.com