Hey everybody,

I just wanted to introduce myself and a little project that I'm working on that 
might be of interest to this audience.

My name is Steve Howell, and I was one of the early project leaders for Guido 
van Robot, which was introduced to this mailing list a little under five years 
ago by Jeff Elkner:

  http://mail.python.org/pipermail/edu-sig/2003-October/003207.html

To paraphrase Jeff, Guido van Robot (aka GvR) brings "Pythonic" improvements to 
the teaching language Karel the Robot.  Since 2003, the program continued to 
evolve, mostly under the stewardship of a Dutch programmer named Stas Z, who 
has helped to internationalize it, clean up its user interface, and maintain 
ports on four major platforms (Linux, OLPC, Mac, and Windows).

  http://gvr.sourceforge.net/screen_shots/

Although I'm proud of the success of GvR, I've always been a little frustrated 
by its lack of adoption.  Although you never know for sure how many people use 
an Open Source project, I think GvR, like many other desktop applications, has 
a high barrier for experimentation.  Although the IDE and language itself are 
very simple, you have to have Python and PyGTK installed, and then you have to 
download the software itself.

I've always wanted to try out a Javascript port of GvR, post it on the web, and 
see if it got any more traction.  This week I finally got a little time to do 
just that:

  http://webstervanrobot.com/

Warning: the program has only been tested on Firefox 3 so far (IE is 
unfortunately broken).

Webster van Robot is currently is a programming language and free software 
application designed to introduce beginners to one of the most fundamental 
aspects of programming--looping.  It allows novice programmers to graphically 
manipulate an environment of streets, avenues, and walls using a simple 
programming language.  (BTW this blurb is mostly plagiarized from GvR.)

Here is a small Webster van Robot that uses all of its features:

  do 2:
    move
    turnleft
    build_wall_on_left
    turnright

Here's how to see it in action:

  go to http://webstervanrobot.com/
  edit the program to say "do 2:" instead of "do 1:"
  click on the run button
  (try out Demo #2 as well if you like)

How is Webster van Robot different than Guido van Robot:

  1) It runs directly out of the browser!  No installation required.
  2) It has only one programming construct now.  This is mostly a function of 
where I am in the development process, but you can always argue that simplicity 
is a feature!
  3) I have slightly different built-ins.  I decide to build in both "turnleft" 
and "turnright," as well as a new builtin for "build_wall_on_left."  I've 
always thought that Karel and Guido should start with a blank slate and build 
their own environment, without having to deal with "world" files.

When I've floated around the Webster idea before, people have suggested some 
kind of Python back end, but I found it was easy enough to implement the whole 
thing in Javascript.  Javascript has its quirks, but it's not a terrible 
language to work in, and one of my goals for the new project is to make it 
ridiculously easy for people to install/distribute the software.

Although I think of Webster van Robot mostly as a toy at this point, it got me 
thinking about the deeper problems of programming language literacy.  I really 
believe that most people should be able to learn Python in their lifetimes, but 
there needs to be a gentle progression to get there.  I've seen Guido van Robot 
used in only a couple classrooms, but that experience was enough to convince me 
that there's still a quantum leap from minimalistic languages to Python itself.

I'm also a huge believer that web apps will always meet with less friction than 
desktop apps.

So here's my pie-in-the-sky goal--I'd like to have a Javascript virtual machine 
that can execute progressively more complicated subset/variants of Python.  Or, 
to put it another way, I'd like a Javascript engine that allows easy, pluggable 
extensions of Webster van Robot as students gain more confidence.  Here are the 
places where I see extensibility:

  1) Plug in new model/views.  Streets, avenues, and walls aren't for everybody.

  2) Plug in new builtins.  Move, turnright, and build_wall_on_left aren't for 
everybody.

  3) Allow a gentle progression through flow constructs.  Start with "do," then 
introduce "if," "while," etc.

  4) Allow "def" fairly early in the process too.

  5) Allow gentle introduction of data structures and variables.  (This is the 
place where Karel the Robot and Guido van Robot don't have any ambition to fill 
a gap, and I think this is where the quantum leap comes into play.  I also 
think the lack of basic variables and expressions make it harder to write "fun" 
robot programs too.)

So, I'm thinking Javascript has enough horsepower to create this basic 
framework, although you could still mostly drive the code from a Python back 
end.  Although I haven't coded anything yet, Webster van Robot has some of the 
very basic pieces to get it started, and I've come up with a 
name--"tballsnake," which is an anagram of "blank slate."  "T-Ball" is a 
metaphor similar to "training wheels," and then the "snake" refers to the end 
goal--Python proficiency.

Anyway, hope some of this is food for thought.

Steve

_______________________________________________
Edu-sig mailing list
[email protected]
http://mail.python.org/mailman/listinfo/edu-sig

Reply via email to