This sounds like something we should hear about at PyCon 2009 in
Chicago. Can you do it either as a presentation or a tutorial? If you
can, we can organize a coding sprint for you.

Also, please consider any such educational Python projects for
inclusion in Sugar on the OLPC XO. http://www.sugarlabs.org/.

On Mon, Sep 8, 2008 at 10:23 AM, kirby urner <[EMAIL PROTECTED]> wrote:
> Just to elaborate a bit, I do get around to telling longer stories,
> sharing "geek lore" as I call it, and the story I tell goes something
> like this:
>
> In the early days of assembly language, it was all about conditional
> jumping to get choices or forks in the road, which led to a first
> generation of higher level coder to write "spaghetti code" even when
> infrastructure for subprocedures was provided.
>
> Djikstra went on the war path to rationalize coding around a main call
> sequence with branching to subprocedures in a tree pattern, reusing
> library utilities, but with much less reliance on global variables,
> context, side effects, other subtle stuff (all that
> "anti-encapsulation" infrastructure).  "Never use GOTO" was his advice
> and many languages took it out.
>
> *That* was the hallmark of the 'procedural programming' era (might've
> been called 'subprocedural' but that's picking nits), to never use
> GOTO, or at least not gratuitously (which is almost always is), to
> always do a kind of top-down style with a main call sequence.
>
> The OO revolution built on top of the procedural programming
> resolution, by giving us encapsulation and inheritance infrastructure
> that would more closely model the guts of a knowledge domain, i.e.
> your job is to think in terms of cells, DNA, airports, train yards or
> whatever but *not* in terms of some CPU with access to memory (way too
> low level and irrelevant to the problems in scope).
>
> OO was also of key importance given the evolution of GUIs and
> non-menu-driven modes of interactivity, where users could (and still
> do) fire off events from a mouse, keyboard, any number of screen
> widgets, and the code had to be "ready" (i.e. "listening") -- much
> more like interrupt-driven operating system design, with event queues
> and so forth.
>
> This is still a challenging kind of programming, goes into threading
> and the rest of it, but we get our feet wet with such curricula as
> John Zelle's, which relies on the cross-platform Tk widget set.
>
> I prefer doing more with SQL first, introduce "multi-user" as an ACID
> challenge (thinking about airline reservations systems), then turn to
> the Web for widget programming, skip the whole "thick client" business
> until a later course.  The old LAMP infrastructure really doesn't
> require any specialized widget programming, just XHTML forms, buttons
> and so on.
>
> Python is a clean implementation of the OO style of thinking, and if
> your knowledge domain is amendable to decomposition in terms of
> objects, then chances are there'll be a way to express it in OO terms.
>  Instances are a lot like subprocedures in some ways, in promoting
> encapsulation, not willy-nilly sharing of globals, plus we still don't
> need GOTO if we ever did (we did with assembler, still do).
>
> I've notice high schoolers are able to follow all this, a kind of
> storytime interlude, like when a teacher reads a story to the group,
> although here I ad lib, might project a comic strip sometime.
>
> I could also see doing this history in a more cartoon form, have been
> urging O'Reilly to branch into the cartoon business more concertedly,
> but that's a difficult transition for a wood pulp publishing giant
> ('Head First' a good first step).
>
> There's lots more to this lore (some of which I get to, a lot of which
> I'm still learning), but the mode is one of standing back, overview,
> altitude viewing.  That's very important in introductory classes, in
> literature, philosophy, art or mathematics.  We neglect it at our
> significant peril in my view.  Leave out the historical dimension only
> if you wish to consign your curriculum to the ash heap of history is
> my motto.
>
> These days, I'm less likely to work directly with high school aged
> students, am more peddling my Python Briefing to their teachers, so
> they're the ones getting this lore, perhaps to pass it back to their
> math classes, along with a syllabus of optional viewing DVDs etc.,
> plus Neal Stephenson's 'In the beginnning...' is still a classic.
>
> Kirby
>
>
>
> On Mon, Sep 8, 2008 at 9:41 AM, kirby urner <[EMAIL PROTECTED]> wrote:
>> Thanks for the clarifications, good to know both options (receiver and
>> receiverless) are both in the mix.
>>
>> Our use of 'procedural' may confuse some students as OO syntax is
>> eminently step-by-step with flow of control and all the rest of it,
>> very recognizably procedural the way I learned the term, with or
>> without the explicit dot notation (which is difficult to hide in real
>> Python).
>>
>> I'm inclined to *not* see 'procedural' and 'object oriented' as
>> orthogonal concepts i.e. they mix together.  Where I do see a big
>> dichotomy is in whether one is expected to define new classes oneself,
>> or simply use the ones provided.
>>
>> Apparently early versions of Visual Basic were "read only" in terms of
>> not having a class defining infrastructure, merely giving developers
>> access to canned OCX objects (instances) with canned APIs, but I could
>> be wrong, that's not a track I've ever followed, even to this very
>> day.
>>
>> As I mention in my Chicago talk, I tell my students "I've never heard
>> of procedural programming, it gives me the creeps" but that's just a
>> rhetorical device to get the ball rolling, as I start with dot
>> notation immediately, within the first 10 minutes.  But that's because
>> I'm teaching core Python, not another language *implemented* in core
>> Python.  These aren't little children.
>>
>> They may have done Logo or other 3rd person avatar controlling (ala
>> Sims) well before taking my class, so I presume this as background,
>> allude to Sims as "objects" and so on, project a YouTube or two if
>> they seem unclear what I'm talking about.
>>
>> Kirby
>>
> _______________________________________________
> Edu-sig mailing list
> [email protected]
> http://mail.python.org/mailman/listinfo/edu-sig
>



-- 
Silent Thunder [ 默雷 / शब्दगर्ज / شبدگر ج ] is my name,
And Children are my nation.
The Six Worlds are my dwelling place,
And Truth my destination.
_______________________________________________
Edu-sig mailing list
[email protected]
http://mail.python.org/mailman/listinfo/edu-sig

Reply via email to