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