[Edu-sig] [edupython] Python in Education Advocacy Article
kirby.urner at gmail.com
Tue Apr 3 12:22:10 CEST 2007
On 4/2/07, Michael Tobis <mtobis at gmail.com> wrote:
> I think we actually need to compete, not to shrug and hope the best
> platform wins. The fact that Python has the momentum it does with its
> rather laid back attitude toward evangelism is a testament to its
> strength as a platform and a community. I don't think that excuses us
> from trying much harder to make a strong case for it, though.
I think that's a valid point: Python's community is laid back somewhat in
proportion to it's confidance in this being an excellent language with a long
and bright future.
Ruby might have made a dent in that feeling, but not at the cost of our
friendliness. It's just that Python has nothing quite so friendly to web
developers as Ruby on Rails, once you factor in some of the intangibles.
http://pythononplanes.com/ doesn't cut it. ;-D
Plus Ruby's out of the box access to OpenGL gives it strong
pedagogical advantages we only *kind of* make up for with VPython --
as Arthur quietly
As for competition, I also believe in that *within* Python Nation. I think
one way we'll remain strong is by seeing CP4E fork off in many directions,
my little feeder system being but one of them (we don't certify but a very
> On 4/1/07, kirby urner <kirby.urner at gmail.com> wrote:
> > I think Python thrives best in a diverse ecosystem of languages. After all,
> > if it's to serve as a "glue language", there need to be languages to glue to
> > besides Python.
> An interesting argument. However, I've long since stopped thinking of
> Python as glue, and beginners surely aren't interested in learning
> multiple languages.
Not so fast. *Some* beginners very much *are* trying to wrap their heads
around several languages, precisely because they're in this try before you
by mindset and don't want to invest oodles of noodle time in the "wrong" one.
Oft times, a beginner really does have a project or challenge in mind, and
just as oft, one language above most others will fill the niche most pleasantly.
To just throw a dart at the dart board and pray the "right" language will emerge
is a bit too trusting an approach for most rationalists.
Don't equate "beginner" with "lazy college student at a party school"
different concepts, though with some overlap.
> > You mention PHP, but don't forget about Plone. We've gone far beyond
> > the cgi days, where primitive Python works well, to more ideas about
> > stuffing ZODBs with Objects that have all these view-related aspects --
> > strong model-view-controller designworks.
> Nevertheless, kids who take up programming outside of school tend to
> say to that? )
All of which languages are pretty strongly OO (ActionScript included). PHP
has come a long way towards being a general purpose language.
I believe in doing these "bridges" into Python assuming a background in
some of these other languages (was writing about that vis-a-vis Smalltalk
just recently, given how the Shuttleworth Pipeline has been shaping up).
> "It is practically impossible to teach good programming to students
> that have had a prior exposure to BASIC: as potential programmers they
> are mentally mutilated beyond hope of regeneration." -attributed to E.
too. Especially when you use it to introduce the DOM, which I don't
think any serious-minded pre-college language arts curriculum can
afford to bleep over. In my Python class at Winterhaven PPS in PDX,
we started talking XML the first day, in relation to Google Earth.
> (I'm not sure he'd have much good to say about Zope/Plone either, but
> that's neither here nor there. The administrative hurdles to setting
> up a Plone site exclude most casual beginners.
Actually Plone pretty much self-installs, including as a web server (don't
even need Apache). It's when you want to start changing the default
look and feel that hurdles arise.
Still, in my experience as a Free Geek (freegeek.org), many kids find
these puzzles motivating, in part because of the friendliness of Python
culture, including the Plone/Zope subculture (I hung out with Alan Runyan
and Andy McKay, and friends in Vancouver BC quite a bit -- what a
wonderful bunch, and that's just the tip of the iceberg).
> There is surely, roughly speaking, some best way to teach programming,
> and it deserves a lingua franca. We all learned the same fundamental
> mathematical notation, even though many others are not only possible
> but in common use by specialists. Should the same not be true of
> algorithmic notation (i.e. programs)?
Dangerous thinking. ;-D
I'd say many a mathematician has been ruined for life for having mind-melded
too tightly with just one mathematical notation. My mantra for CS0 is "if they
just expose you to one language, think about transferrring to a real school."
> Either Python, (i.e., reasonably close to an optimum) will prevail or
> some damned QWERTY nonsense (not designed for nonspecialists) will
> prevail for another generation. Probably Java. Which leaves the
> impression that CP!4E. Which I hope we all agree is unfortunate.
I don't usually pick fights with Java per se, which is a system language more
than an agile one, has the capability to run faster because of all we tell the
compiler... other advantages.
It's in a league with C# and C, as an implementation language for Python,
more than a direct competitor.
CS0 has recently discovered that "agile languages" make way more sense
as first languages. Smalltalk would qualify as agile given it's edit/continue
capabilities and so on. ;-D
Now that CS departments are waking up and smelling something besides
coffee, having mired themselves in "Java as a first language" for far too long,
doesn't mean we now have to diss Java. That long CS tail doesn't wag our
Python's head, praise Allah.
> > Lists, dictionaries, top level functions and objects,
> > a concise model of the OO paradigm... __rib__ syntax.
> A honking great idea, to coin a phrase. Let's have more of those, please.
I'm having a lot of success teaching Python, but I do it a particular way
only *some* will consider imitating. I populate the field of mathematics
with Python-coded "math objects" (polynomials, polyvertexia, finite groups
and such). We learn about vectors doing vector graphics.
We feel sorry for those poor slobs still using calculators.
Plus we call it "gnu math" and don't think we need approval or management
from CS types, who still mostly don't well understand, let alone open source,
this kind of pre-college material.
More information about the Edu-sig