[Edu-sig] [edupython] Python in Education Advocacy Article

Dethe Elza delza at livingcode.org
Sat Mar 31 06:31:02 CEST 2007

On 30-Mar-07, at 9:13 PM, Paul D. Fernhout wrote:

> Still, there are always tempting new projects like "Factor"
>   http://factorcode.org/
> which uses FORTH ideals to do amazing things (like with OpenGL) in
> fairly small footprints and with minimal external dependencies and  
> with
> fairly few core developer-years of work (though the developers are
> unusually bright. :-) From the web page: "Factor has an optimizing
> native compiler, automatic memory management with a generational  
> garbage
> collector, a powerful collections library, and various advanced  
> language
> features such as higher-order programming, continuations, and  
> extensible
> syntax. Factor development is done in an interactive environment  
> with a
> graphical user interface. There is a single-stepping debugger which  
> can
> travel backwards in time, and extensive documentation. An easy to  
> use C
> library interface allows one to call C libraries without writing any
> glue code in C. Bindings for OpenGL, FreeType, X11, Cocoa, and Windows
> APIs are provided."  (I can hope AK's FONC
>  http://vpri.org/mailman/listinfo/fonc
>   http://www.viewpointsresearch.org/html/writings.htm
> in a few years will produce something even beyond that, if it  
> succeeds).

Factor looks interesting.  You also might be interested in Io:


<quote>Io is a small, prototype-based programming language. The ideas  
in Io are mostly inspired by Smalltalk (all values are objects), Self  
(prototype-based), NewtonScript (differential inheritance), Act1  
(actors and futures for concurrency), LISP (code is a runtime  
inspectable/modifiable tree) and Lua (small, embeddable).</quote>

Despite the fact that Python isn't listed as an influence on Io, I  
find it has a bit of a pythonic feel, with the difference that  
prototyping brings.  It has bindings to a rich set of external  
(mostly C) libraries (async sockets and dns, SQLite and SkipDB  
(embedded transactional databases), regular expressions (Perl 5  
compatible), xml/html/sgml parsing, md5, sha1, zlib, lzo, blowfish,  
curses (text interfaces), OpenGL/GLUT, PortAudio, FreeType (TrueType  
antialised font support),Objective-C bridge.  And, one of my favorite  
things, it has Erlang-like messaging and scalable (non-thread)  
concurrency.  Not quite ready for prime time yet, but very  
interesting to keep an eye on.

> The bottom line on "Edit and continue" is that making it work properly
> likely requires deep thinking and understanding about the entire  
> Python
> runtime system (as well as getting pickup of your changes by  
> various IDE
> developers), and Python as a system has moved so far along the
> development curve that coming from a standing start up to an
> understanding of Python's current internals necessarily beyond that of
> Guido (who says it is impossible :-) is likely a long hard effort.
> During which time Python will keep moving. It's not exactly a best  
> first
> choice of Python internals hacking. Guido is obviously the best person
> to tackle it, I think; just need to figure out how to motivate him to
> care about it instead of other cool and important things. Now if I  
> could
> just get hold of some "first herring" perhaps? :-)
>   http://travel.independent.co.uk/europe/article548699.ece
>   http://en.wikipedia.org/wiki/Herring

Well, the herring is probably the OLPC, which Guido is working to  
support by implementing edit and continue, according to his blog:

The software is far from finished. An early version of the GUI and  
window manager are available, and a few small demo applications:  
chat, video, two games, and a web browser, and that's about it! The  
plan is to write all applications in Python (except for the web  
browser), and a "view source" button should show the Python source  
for the currently running application. In the tradition of Smalltalk  
(Alan Kay is on the OLPC board, and has endorsed the project's use of  
Python) the user should be able to edit any part of a "live"  
aplication and see the effects of the change immediately in the  
application's behavior. (A versioned document store will make it  
possible to roll back disastrous changes.) This is where Krstic wants  
my help: he hopes I can work magic and implement this feature for  
Python. I got started right away during the conference, with a  
reimplementation of python's reload() function that can patch classes  
and functions in place. Even this small component still has a long  
way to go; a checkpoint of the work in progress is checked into  
subversion as part of the Py3k standard library. That's not where the  
rest of my OLPC work will show up; they use GIT for source control,  
so I will get to learn that.

At least, that's what it looks to me like he's saying, and he said  
much of the same thing on this list when he posted an improved reload  
module that he said was a simpler version of the one he was working  
on.  Maybe it won't be as powerful as Smalltalk's edit-and-continue,  
but it might end up being the 80/20 solution to the same problem.

Now if I could just get him to take concurrency seriously (and the  
only serious approach to concurrency that seems to be workable is  
what Erlang does).


"...our universities, I suggest, are not half-way out of the fifteenth
century. [...] The three or four years' course of lectures, the bachelor
who knows some, the master who knows most, the doctor who knows all,  
are ideas that have come down unimpaired from the Middle Ages.   
Nowadays no one should end his learning while he lives and these  
university degrees are preposterous. [...] Educationally we are still  
for all practical purposes in the coach and horse and galley stage."  
H. G. Wells

More information about the Edu-sig mailing list