[Edu-sig] RE: articles of possible interest

David Scherer dscherer@cmu.edu
Sun, 30 Apr 2000 03:00:06 -0400


> Hmmm. I think we're diverging on the issue of the end goal. You seem to be
> assuming we're aiming to teach people to be programmers. I'm not sure
> that's the goal in and of itself... my personal take is programming as a
> means to greater control and understanding in an IT-dominant world --
> 'literacy', if I can use that word.

I think the goal is to put tools in people's hands.  Not to make them
professional programmers or expert software engineers.  Just to give them
skills that they can use and build on.  Someone who has only programmed in a
MOO just isn't going to apply the skills they've learned to a problem that
pops up in their life.  Someone who takes a course that does (for example)
some Python MOO programming, some Python graphics programming, and some
Python Internet programming can!

It's an incredibly ambitious goal to try to get "Everybody" to learn a
programming language.  Getting everyone to learn two is probably just
impossible - so I'd like to push the Right Thing.  Everything related to
CP4E has to be looked at in that light: choose your battles.

> And if that's the goal, then a language that is very wide in domain scope
> may not be ideal... one with a certain degree of domain-specificity may
> be preferable. I think we've seen on this list many arguments for why
> Python is a better choice than C++ on those very grounds. The nice thing
> about Python is that it is very well suited to the kinds of Internet-y
> things that are hot these days -- parsers and GUIs and CGIs and stuff like
> that. The very things that we wouldn't use C++ for because it's too darned
> general.

Python is a better choice than C++ because it is easy to learn, and because
it is a more useful tool for casual programmers.  There is nothing
"domain-specific" about Python.  Anything a nonexpert can do in any
programming language, they can probably do with Python given some
appropriate modules.

C++ may be at the opposite end of the "power" spectrum from MOO, but someone
with a year of C++ instruction is probably in the same position as someone
who has played LambdaMOO for a year.  They've learned a lot - but until they
learn more, they can't *do* anything.  In practice, C++ is useless in the
hands of anyone but an expert.

> MOO is a further narrowing of domain, and I'm going to invoke
> Bruckman's work again to point out the efficacy of a very tightly-coupled
> language/application pair. She's got 9-year-olds programming not because
> you can create this or that data structure in MOOcode, but because you can
> do something that's immediately meaningful within that *cultural* context
> -- a pet dog 'bot or whatever -- in not too many lines of abstraction.

Bruckman's work is an incredible step.  My hope is that, since Python is so
remarkably easy for a general-purpose language, her basic approach could be
used to teach Python, which is a much more directly useful skill.

> Somebody the other day wrote here very eloquently about the line between
> interface and implementation.

Thank you; that was me :)

> And I'll agree -- if we had an entirely Python-based MOO, that would be
> wonderful, but I'm not sure it's the most important thing on the agenda.
> But Pavel Curtis' MOO succeeds by keeping the implementation layer very
> thin, and letting most of it happen up above, in MOO code, so the line
> between implementation and interface remains, in practice, fairly fuzzy
> there too.

MOO code is still only good for making more MOO.  Having invested expensive
time learning that language, you can't use it to script a graphics engine,
because there isn't one in MOO.  There are several for Python.  You can't
script a web page, you can't draw a graph, you can't control your mail
client.  Theoretically all of these things could be integrated with the MOO
language, and perhaps a few of them have, but Python is a far better tool
for that sort of thing.  You wouldn't choose MOO to write a symbolic
differentiator in calculus class or an orbit simulator in physics, but both
of those would be accessible projects for Python-literate students.

Of course, there's a great danger that even people who learn Python won't go
on to do these things.  One of the big goals of CP4E needs to be connecting
its "graduates" to the resources and community they will need when they ask
"can I use Python to do *this*?"  That's another place where I think a
"Python MOO" could serve - if there were a centralized server like Moose
Crossing for Python, Python experts would surely gather there.  I think that
a world implemented and immediately extensible in Python would be a great
place to learn, teach, and talk about Python.

> n

Bridge of Death

You are standing on a rickety bridge over the Gorge of Eternal Peril.
The bridgekeeper blocks your way.

The bridgekeeper says, "STOP!"
The bridgekeeper asks, "What is your name?"

>

Dave