Fwd: Re: [Edu-sig] Why is Logo popular, while Python isn't?

Kirby Urner urnerk@qwest.net
Thu, 21 Nov 2002 11:55:47 -0800


At 10:35 AM 11/21/2002 -0800, Terry Hancock wrote:


>Some people are of the "more-the-merrier" school regarding languages --


Yeah, that's me pretty much.  A programming language is an API is an
interface.  A kitchen appliance is an interface (a control panel),
as are desktop applications (spreadsheets).  Life is packed with
these gizmos we need to interact with (driving a car), and the
sense should be of an endless need to tackle new interfaces.

The goal for a programmer is to get familiar with key concepts (flow
of control, efficiency of algorithms, data structures, layers or levels
of detail...) and then look for how they're implemented in whatever
languages (*if* they're implemented).

I think teaching/toy languages have their place.  The Lego Mindstorms
thing is okeedokee.  Programming is drag and drop of flow charty symbols,
filling in a few properties, then sending it to the main unit (the
RCX) via infrared.

The language is very turtlish (forward, back, rotate) but also event
oriented, in that the robots have sensors (touch, light).
http://mindstorms.lego.com/eng/products/ris/rissoft.asp  Kids get
to build the machines as well as program them, which adds a useful
dimension.  I had an OK experience tutoring kids with this kit.

Partly my attitude/bias is informed by wanting to teach/learn mathematics
type stuff.  It's easy to carve out bite sized challenges like generating
the Fibonacci numbers.  There's a fairly breezy, superficial "teach me
what I need in 30 minutes" aspect to this.

I'm not recommending that *every* language be approached in this way,
but I think hasty, breezy familiarity with a language is sometimes just
what the doctor ordered, and having the confidence to "speed read"
language manuals is something I'd like to develop in students.

Some languages don't lend themselves to this at all, but Python does
(you can start using it immediately -- Logo too).

Why learn Logo?  Because of the literature that's grown up around it.
I'd use Logo in a class *just because* that's what's featured in
'Turtle Geometry' by Harold Abelson and Andrea diSessa (MIT, 1980).
Subtitle:  The Computer as a Medium for Exploring Mathematics.  In
other words, given my motive is exploring mathematics, I'm led to
Logo by the books (not vice versa).

Likewise, I'm led to J because Kenneth Iverson shares my math-through-
programming interest and has companion labs (in J language) for both
'Concrete Mathematics' by Knuth et al, and 'The Book of Numbers' by
Conway and Guy.  The literature leads me into it.  Besides, not many
languages give you a primitive operator to invert a matrix, or take
the derivative of a polynomial (Mathematica does, but it's rather
spendy and fat).

And I think it's just fine to learn some of a language just to be
able to appreciate a connected body of literature -- and then forget
most of the details.  What sticks with you are useful concepts, and
the experience of learning -- hard to quantify, but valuable
nonetheless.

If your goal is to write large applications with fancy GUIs (e.g.
games), then you need to really buckle down and learn a language
*well*.  I often use Xbase for this purpose.  Sophisticated IDE
(all the drag and drop widgets), object oriented, embedded SQL.
Not very cross-platform though, and not suited to a lot of things
Python would be *much* better at.  My Python stuff tends to be
rather short, and not GUI-intensive (I write my modules to be
imported and interacted with at the command line, not run top-to-
bottom as scripts, prompting for inputs).

My rule of thumb is:  programming is for everyone who's interested
and has the necessary privileges (a certain living standard is presumed,
to even have access to computers, let alone fancy toys like Mindstorms),
and the goal should always be to learn a minimum of two languages
fairly proficiently, never just one, plus one should cultivate the
habit of tackling additional languages "just for the fun of it,"
even if just in a breezy, off-the-cuff kind of way (the way a lot
of people have learned HTML).

And when it comes to learning a minimum of two languages, I don't
think you can go wrong by making one of them Python.

Kirby

PS:  speaking of Fibonacci Numbers, there's this nascent Zope server
using the Plone CMF that I'm working on with my friend Stu, that's
not really open to the public yet.  But here's a sneak preview, in
the form of an article by myself re generating the Fibo numbers,
using both Python and J.  Very basic stuff.