[Edu-sig] Python as first language - yet another paper
kirby urner
kirby.urner at gmail.com
Thu Aug 17 06:08:48 CEST 2006
On 8/16/06, Radenski, Atanas <radenski at chapman.edu> wrote:
> For those of you who might be interested, I have posted a recent paper
> on the use of Python as a first language. The paper is entitled:
>
> "Python First": A Lab-Based Digital Introduction to Computer Science
>
Thank you sir.
I think your arguments will be understandable to people outside of CS,
which is important, as there's a lot of concern about how we're not
getting enough competent technical people across the board, and CS is
seen as a bottleneck, i.e. its inability to recruit seems
counter-intuitive given it has, in principle, access to a lot of the
best toys. CS-related careers have a lot of glitz and glamour. But
as you say, a dry course in nothing-but-Java doesn't give that
impression, and would-be stars wander off to other majors.
Internally to CS, however, there's the more esoteric line we draw, not
between commercial and education languages, but between system and
agile languages, the former being used to write the latter. Classic
core Python is a very commercial project because it's written in
lickity-split C code, and that's about the fastest on the planet.
But you don't want to recruit through a tiny pinhole. Hard core C
coders will emerge later in the game. Initially, you want something
softer and broad spectrum, and that means no system language at all,
but an agile one. If we leave "agile" strategically under-defined, we
can use it to sneak J and APL into the fold, i.e. lets snarf up some
functional assets while we're at it and not always toot just OO. What
we're *really* talking about are VHLLs (very high level languages).
But this latter way of drawing the battle map is too esoteric for the
average non major, unless you want to build it in as a feature of your
intro course. And this, I think, is a good strategy in any showcase
class designed to recruit new majors: give a lot of overviews and
previews, about what's ahead, forks in the road, expected
developments.
Use Python as exemplary of what we mean by "source code", but don't
discourage the impression that this is a vast territory, with as many
languages as O'Reilly has animals, and then some. Plus we like to
give a sense of history, of how we got to this point. We allude to
other disciplines, even tell some war stories (e.g. Turing versus
Enigma @ Bletchley Park).
I'm hoping that Python continues to win friends among those who write
game engines, so that one day, you want to build your own dinosaur,
with Python for a nervous system, that's just a matter of importing a
module and modifying its types. Pretty soon you'll have the creature
of your dreams, plus you've gained some insight into how coded
operations are behind every screen, every menu (we hope delivering
snappy performance, but that's not always the case).
A mouse click is an event. You've poked in the guts of wxPython, so
you know what that means.
Every surface is sensitive, because every widget inherits not just
from Window, but from Event. And Python makes this easy because it
supports multiple inheritance. By the end of the first quarter,
students should understand what that means, even without ever having
to have written a line of Java or C.
As for whether Java is the right follow-on for a CS2, I think a bigger
success in recruiting will open more options there too.
Yes, the Java track is secure for the time being. But don't deny
those who wish to dive into C, now that they're hooked, now that they
know that coding is for them. Explore the guts of CPython, the study
the Java and C# implementations.
It'd be wonderful for Python's future if we could be assured of future
system language competence in our community, as that's the only reason
we have this community in the first place. Our heros are system
language programmers. We don't diss those languages, and those that
use them. We love that these VLLLs were powerful enough to in turn
give us something less painful to code in.
A generation (Guido's, some younger, some older) has sucked a lot of
pain out of the programming experience, and that's a very good thing
for CS over the long haul.
Kirby
More information about the Edu-sig
mailing list