[Edu-sig] Beyond 3D

Dirk Heise dheise@debitel.net
Thu, 6 Apr 2000 23:39:58 +0200

> Von: John A. Miller <jmillr@umich.edu>
> An: edu-sig@python.org
> Betreff: Re: [Edu-sig] Beyond 3D
> Datum: Dienstag, 4. April 2000 19:45
> * simulations
> by which I mean the gestalt implied by complex adaptive systems, agents,
> neural networks, genetic algorithms, cellular automata, and embodied by
> such diverse programs as StarLogo, Swarm, AgentSheets, and others. There
> are a number of elementary scenarios that could be used to introduce the
> concepts, such as Conway's Game of Life, Iterated Prisoner's Dilemma,
> Foxes and Hares, El Farol Bar Problem (and the related Minority Game),
> Sugarscape, and many others. These make for wonderful programming
> exercises, besides being fun to explore.
> One big question in my mind is how necessary it might be for specialized
> libraries for facilitating these explorations. In other words, Swarm,
> StarLogo and AgentSheets are especially adapted for creating these kinds
> of simulations, and remove much of the 'bookkeeping drudgery' involved
> with managing lists of agents and their interactions and their display
> their behaviors and the world in which they exist and ... I don't know of
> any similar libraries for Python (but I haven't looked either :^) I guess
> 'reinventing the (simulation) wheels' makes good pedagogic sense if your
> primary aim is teaching programming, but using tried and true simulation
> libraries makes more sense if your primary aim is to teach simulation
> skills. Maybe we could have two groups of students with one group
> providing such simulation libraries, and another group using them?

Programming something like a cellular automaton is real fun.
Learning to use a specialized library for the problems you mention
is an absolute turn-off. (Steep learning curve, and you're 
learning a much too specialized thing. You can't even reuse
it for a job (Ok, not much of a surprise for students)! 
When you program a thing
like that yourself, you're the creator; when you learn 
how to push the controls of a specialized lib, you're feeling
much more like a (Loo)user. That's okay for an expert,
he has the experience and attitude to go through that, 
but i think it's demotivating for a beginner.

Re-inventing wheels is not a bad
thing in education, i think, and when the new wheel has less
vertices than the old one, it's even a good thing in real life.)

When we're talking about kids here, i can tell you what will
- They'll crank out their cellular automaton in Python
- They'll see that it's too slow.
- They'll extend their Python interpreter with a C module to
  do the things that need speed.
- Eventually they'll quit Python and only use C++.

I think before they drop into step 4, somebody should tell them
that it's a fine thing to have the speedy things in C or C++
and keep the control logic in Python. (But one could also argue:
when they leave Python to pick up a nifty C++ compiler & IDE,
like the Borland Builder, CP4E has reached it's goal anyway.)

Same thing happened before, somewhere around '82, when
we got some CBM 4040s in school, learning BASIC, and
quickly optimized our games using pieces of machine code.
It was great fun, BTW. And the delegation of tasks between
the two languages was absolutely the same like between
C and Python, we're just 2 paradigms ahead.

(Ok, 20 years makes two paradigms. One decade, one paradigm.)
(We're re-inventing a wheel, it seems - though, in 1982,
it wasn't really invented, it just happened)