Ian Bicking: the old part of his blog

More Python, Education

There's another post on the second day of the Shuttleworth Summit (that I also blogged on yesterday).

Some initial reactions:

I noticed this:

Momentum seems to be building for a stronger graphics engine, either 2D or 3D, with Python bindings, that'll run interactively from within a browser. The Squeak folks may be willing to contribute to this effort. Guido feels we'll need to recruit new talent for this, as the Python community is currently pretty maxed out on projects. Should such an engine be developed, turtle stuff would be incorporated therein.

I'm a bit surprised -- Python graphics doesn't seem to be in bad shape, what with Pygame, VPython, and other projects.

As a plugin, perhaps there's nothing in Python to use. I don't get the plugin thing. Plugins seem totally irrelevant now. Maybe Logo written in ActionScript (the Flash Javascript-a-like), or Flash as an output medium... but introducing another plugin seems pointless. It's just putting a normal GUI app inside a browser window, which is like the worst of all worlds.

Mozilla + XPCOM + Python + Canvas/SVG... that seems like a usable combination. But not for the ability to distribute -- unless you also offered a server-side programming alternative where graphics were pushed out to the browser, instead of generated in-process to the browser.

Honestly, I just don't think fancy graphics are important. Graphics of some sort? Sure, but I don't think the graphics have to be top of the line. Other issues are far more important, and the graphics technique should be chosen based on those other issues. Things like how the development environment feels.

Graphics? Eh. Have you seen the pictures kids draw? That ain't high art (you must appreciate that link in the absurdity of its sentiment, otherwise it might seem mean). And yet art or not, it makes kids happy to draw. It's the process, not the product, and if adults and teachers can figure that out, the kids will be totally comfortable working that way. That's what kids do.

Created 14 Apr '06

Comments:

AppleScript had an experimental (never released) i18n functionality. Like Hypertalk, the language is pseudo-English with fairly regular syntax, so you could write a script in English, send the bytecode to someone in Japan, and the other person could open the script with the syntax (although not the variables) localized to Japanese automatically.

I don't think Python graphics are nearly easy enough to use. Anything geared towards beginners is going to have to start at a much higher level. A good IDE a la Hypercard is critical.

# jml

Ease of use is a separate matter. The raw material is there, it just needs more work on the API, and a more constrained set of functionality.

# Ian Bicking

As someone who learned to program with Python, I would like to offer a counterview.

Essentially that minimilism is essential. And a sense of direct, unmediated, transparent contact with underlying mechanisms. The Python prompt is an example of that kind of environment.

This is true I think partly on cognitive grounds, but also partly on motivational grounds. I am motivated to learn to program to gain independance from others' notions of how things need to be - otherwise I might go about the business of being a happy Windows user. A heavy IDE leaves me confused about what is possible from outside of it - from day one.

Before coming to Python I had found Scheme via the DrScheme project - and found myself confused from the beginning as to what was the environment and what was the programming language. And moved on.

In finding Python, a generic text editor and the raw prompt I find what - for me - was the right environment.

And I think the most important point - the progress was not only immediate, but has been sustained.

I like your reference to childrens' drawings.

We should not be concerned with the sophistication of the output - which is what I think the heavy IDE aided approach seems too often to focus upon. Teaching children or anyone else that is what is important at the initial stages is the output, rather than the process, is misleading them. And children - in particular - are intuitive enough to know when they are being mislead. If we can't find a way to introduce children to programming without misleading them - and I seem to be open to that possiblity that this is true more than many others - perhaps we should simply wait until they are developed, cognititively, to the point where we can.

Why start a process in a way that is not sustainable.

What does the environment teach us really about the most important aspect of becoming a programmer in any meaningful sense - i.e., working independantly of large sets of mysterious depedencies. Most IDEs for beginning programmers are not only neutral, but I think counterproduct on this point - introducing programming as another form of dependency, rather than as the kind of liberating acitivity it should be understood, from the beginning, to be. And I think needs to be, if interest in it is to be sustained.

Art

# Art

I started programming 26 years ago, and the first program I wrote was a little tank twirling in different directions and prowling around the screen: I got such a buzz from that experience, I'll NEVER forget it: I was hooked, excited and motivated to learn more (I've been programming ever since) - for me the graphical element was crucial (I was 14 at the time), so I can fully understand the Logo-like mindset of including simple graphics as a learning tool.

That first language was Basic, and since, I've used C/C++/Java/Perl/Assembler (and a few others) for work, but until I came across Python (about 6/7 years ago), I didn't really ENJOY programming like I did at the start. Python gave me that buzz because it let me DO THINGS, and do them quickly and easily (much as I could with those original 8k BASIC interpreters and a few peeks and pokes).

Now, to get back more to the topic of graphics: over the last few years, I've been re-visiting graphics, using Python of course, on the web (SVG/CSS) and locally using Tk; AnyGui; PyGame; WxPython. Anygui was my favourite project as it abstracted the details, but, as we know, it didn't get completed. However, my experiments with this and PyGame and wx all lead me to the conclusion that it would be incredibly useful to have a REALLY SIMPLE graphics capability accessible from the python standard library. Now, I don't want a simple wrapper around existing libraries as they all seem to require a little too much boilerplate code to do simple things: what we need is something a lot more akin to Logo, but perhaps updated to allow more complex, modern graphics. I'm not sure of the exact form that this might take (although PyGame goes some way towards providing the capability), but I, for one, agree that it should be done.

P.S. I'm a Vim/command line guy and never use an IDE if I can avoid it, but I have found Eclipse useful for Java coding, and I also agree that a usable IDE is important for approachability (if only to avoid typing pydoc -g :)

Best Regards, Tushar.

# Tushar

I think we are pretty much on the same page.

My main Python project is itself devoted to graphics:

http://pygeo.sourceforge.net

Graphics are motivational and the feedback loop of code to graphics has been important for me.

An IDE has not been.

I also am in agreement as to the fact that it would be wonderful to have some high potency graphical capabilities within the Python standard distribution.

The most likely candidate might be VPython:

www.vpython.org.

I think it is in the right spirit and has the kind of small footprint that would make it appropriate as a battery included. I think the main push back is crossplatform issues - it has some fairly exotic dependencies on Linux, does not run natively on Mac, and the more exotic OS's I would suspect might be even more problematic.

Though none of this sounds unsolveable with reasonable effort.

Art

# Art

Just as a note, pygame has already been used in education a bit. Here are some details.

It has been taught to 9-12 year olds by a person I met at a community learning center.

Also, I did a set of 'lectures' for an online teaching website teaching python using pygame.

There is also a book in development which uses a very logo like style. Pysgear is also built on top of pygame.

There has also been university level courses which teach pygame.

# Rene Dudfield

It will be nice if and when we can get to the point of talking about what has been effective rather than what ahs been used.

And what has been effective has to be measured against defined goals - a subject about which there is a lot of confusion, and I think sometimes almost intentional ambiguity.

As Ian say about Logo:

""" It's important to remember that this is not about teaching programming. It's about teaching math, or abstraction, or debugging. """

That's pretty vague stuff, IMO. What kind of math? What kinds of "abstraction"? In what way is this more powerful than non computer-aided approaches for a given age group? What age groups are we talking about?

Personally I can't live with these ambiguities within the context of discussions as dire as the issue of educationa and children. Too undisciplined and too much room for the geeks to justify a geek-centric view of the domain.

So I am very much off the Kay bus, and make no bones about it.

And I don't actually believe that Kay has an interest in Python - at least the Python we know and love. I think his interest is in the energy of the Python community. Hopefully that energy remains focused on developing and eveolving its own approaches, rather than adapting and porting those from other domains and communities.

And I think that means evolving narrower curriculums with clearly defined goals - the Software Carpentry project, the physics curriculums related to Vpython, etc and etc. No Big Idea. Lots of big ideas.

Art

# Art

So I am very much off the Kay bus, and make no bones about it.

And I don't actually believe that Kay has an interest in Python - at least the Python we know and love. I think his interest is in the energy of the Python community. Hopefully that energy remains focused on developing and eveolving its own approaches, rather than adapting and porting those from other domains and communities.

You seem to have a chip on your shoulder about Alan Kay. Why is that? Really; since he doesn't have a blog or anything, much of what I can infer of his intentions is highly indirect. And I've become addicted to primary sources, so indirect reports are highly unsatisfying. So I'm curious what exactly you are reacting against in his work or ideas.

# Ian Bicking

I am not sure "chip on my shoulder" is fair.

What I do is look and read and see what water he has to say holds outside the context of who he is and what he has accomplished outside of realms directly related to education and children.

And the common sense answer always coming back to me is - very little.

To answer in true detail would take more space than is appropriate to take here.

What is typical in his writing on the subject is a good analysis of the issues - saying all the right things, mostly from other sources, about what our intent should be about children and learning proces and etc. and etc., and then part 2 is the presentation of his answers, but there is no coherent effort to connect the dots on how in any objectively, definable way his answers address those problems. Except that he is Alan Kay.

Bottom line, I think the questions being addressed can - at this stage - only be approached with a sense of humility. There are many who for example believe that exposure of children to computers as a learning mechanism is not simply overstated, but is fact actively harmful. My mind is open to the possibility that they are wrong. And that they are right.

Bottom line is that Kay consistently seems to me to fail the humility test, where that is the most meaningful test to pass in this domain at this time, in my view.

Art

# Art

There are too many varied and wide goals for everyone to focus on them.

The pygame goal is to make games programming easier. So people don't need C or C++ to do games. 'Takes the "C++" out of "Game Development"' It's amazing how many people are able to make some sort of game that could never finish anything with C/C++.

So pygame and python allow more people to do something fun with programming. I think programming is a useful skill to have. So teaching programming through games making is a fun way to teach something. People who are interested in something are more likely to learn it.

I think games programmers are often the least geeky/nerdy programmer types around. By that I mean, they are often more socially able. I think this is because games programmers are drawn to it for different reasons than other types of programmers.

Music, and games programming goes together often too. People interested in music programming often gravitate to python for its ease of use. However I think python is a little limited at the moment for audio programming. However python-gst, and pymedia are getting closer to allowing complicated things. The 'Processing' smalltalk like language is where it is at for audio ease of use at the moment.

I like the 'mathematician in the street' quote from your web page... a friend of mine is doing a comedy show about teaching maths in a less nerdy way right now. http://www.grouphug.com.au/tmr/ Teaching maths through comedy.

# Rene Dudfield

The teaching math through comedy link is too cool (and unfortuantely a bit too far from me). I am all for detaching math from notions of solemnity - and am working towards making PyGeo at least a bit sillier. Why limit representing a point in space to, say, a sphere. Why not - I dont' know - a propeller blade. Nothing is accomplished in particular except some silliness - which is something.

On the pygame front - I had the opportunity to meet with Winston Wolff who is working in New York on a business model centered around teaching game programming as supplementary education, mostly for gifted children. He is a CS guy out of UC Berkeley who has some background in the game industry.

http://stratolab.com/

I was trying to sell him PyGeo(sell as in free but I'd love to see it used in your curriculum), so I did more talking than listening.

But he certainly seems to be smart, with the right background, and committed to his ideas, both as ideas and as a way to pay the bills.

Art

# Art

The teaching math through comedy link is too cool (and unfortuantely a bit too far from me). I am all for detaching math from notions of solemnity - and am working towards making PyGeo at least a bit sillier. Why limit representing a point in space to, say, a sphere. Why not - I dont' know - a propeller blade. Nothing is accomplished in particular except some silliness - which is something.

On the pygame front - I had the opportunity to meet with Winston Wolff who is working in New York on a business model centered around teaching game programming as supplementary education, mostly for gifted children. He is a CS guy out of UC Berkeley who has some background in the game industry.

http://stratolab.com/

I was trying to sell him PyGeo(sell as in free but I'd love to see it used in your curriculum), so I did more talking than listening.

But he certainly seems to be smart, with the right background, and committed to his ideas, both as ideas and as a way to pay the bills.

Art

# Art

The reason why Canvas/SVG is important isn't so much "Pretty Graphics" as the ability to reasonably portray non-rectilinear anything. Displaying any sort of finite state diagram or other visualization aid is nigh impossible without Canvas/SVG.

As "python-in-mozilla"http://developer.mozilla.org/en/docs/Building_PyXPCOM is making progress, the framework should be there to use.

# Ethan Fremen

"""The reason why Canvas/SVG is important isn't so much "Pretty Graphics" as the ability to reasonably portray non-rectilinear anything. Displaying any sort of finite state diagram or other visualization aid is nigh impossible without Canvas/SVG."""

Canvas and SVG are poor opengl hacks. Canvas plans to be OpenGLES one day.

# Rene Dudfield

I'm frustrated by a growing trend to look back at what has been done and try to recreate it instead of creating something new through innovation alone. I'm writting in regards to LOGO. Yes, many of us grew up learning logo as our first language. I remember the C64 lab in gradeschool where we would spend 45 minutes at a time staring at that triangular turtle on the screen.

It was a different day back then. LOGO was actually advanced for what the hardware could do, it was designed around how graphics were processed, and Lisp was prehaps the best language of the day.

Newer hardware has some great 3d capabilities. Utilizing them for education is something for modern-day innovation.

RE: Python 3d, I'm a developer with the Soya3d project (www.soya3d.org). We've got an awesome OO 3d frameworking going that's under-utilized by the Python community. Definetly worth checking out.

# Arc Riley

Although I expect there's ample links and discussion at EDU-SIG list, I still feel compelled to link an gratuitous example of graphics in a "Kids Programming Language":http://www.kidsprogramminglanguage.com/

# DeamG