On Nov 12, 2006, at 10:56 PM, Ross Werner wrote:
I tend to vote for the latter, since it's inevitable (IMO) that
programmers will understand less and less of what's "really going
on" under the hood. First people complained that new programmers
were jumping straight into programming in assembly and never really
understood what was going on at the hardware level. Then people
complained that new programmers just coded in C without
understanding what was going on at the assembly level. Then people
complained that new programmers were starting out with high-level
languages like Java or Perl without ever understanding what was
going on at the C level. Soon people will be complaining that
people start out using massive libraries and frameworks on top of a
high-level language and never understand what goes on even inside
the libraries.
I really agree with you here. Although even 'back in the day' they
had microcode below the assembly level, today the assembly-level code
on a x86 chip is just a facade in front of a very complex system,
which I only understand the rough outlines of. Trying to start at
the 'first principles' of hardware is going to be a pretty tough sell
for a new programmer on modern hardware! Better to start with
something simple that the new programmer can intuitively reason
about, even if it's fairly remote from what goes on 'under the
hood'. Having things set up to make 'cool' programs quickly would be
a plus, too, so long as those things can eventually be deconstructed
so that the inner workings become clear to an inquisitive programmer.
Anyway, I've recommend this approach to at least a couple of people
who were interested in learning basic programming, so we'll see how
it goes!
One of the things that initially impressed me about Python was the
emphasis on bringing programming to everyone. I don't know that it
will succeed in that goal, but it's important to have people working
on it, because programming on some level will become increasingly
important. I think your PyGame approach is probably a good one, and
hopefully your efforts to help people use it will bear fruit.
For younger kids, there's cool system built into Squeak called Etoys,
which lets kids draw 'morphs' directly on the screen and program them
through a tile-based language. It's actually been used in some
education programs, and has seen a lot of success in teaching kids to
think about programming.
For people who haven't been exposed to any programming but have had
some mathematical experience, the TeachScheme program is also likely
to succeed. It's been used in some high school programs to some
encouraging success. One interesting thing about the results so far
is that girls seem to do much better with it than they did with
languages like Java and C++. Boys were often turned off by the fact
that Scheme isn't used much in the 'real world', but lots of them
ended up loving it eventually anyway. There's a complete textbook
available and a simple IDE (DrScheme) with some powerful learning
features that tie in with it.
If anyone is interested in any of these things, I can dig up some
links tomorrow.
--Levi
/*
PLUG: http://plug.org, #utah on irc.freenode.net
Unsubscribe: http://plug.org/mailman/options/plug
Don't fear the penguin.
*/