[OLPC library] Curly Logo / OLPC

Ian Bicking ianb at colorstudy.com
Thu Nov 29 13:05:16 EST 2007


David Jones wrote:
> On 28 Nov 2007, at 21:01, Samuel Härgestam wrote:
> 
>> Hello all,
>>
>> This might be a good time to inform/remind potentially interested  
>> parties about the Logo tutorial I wrote for OLPC about a year ago  
>> (http://www.israelsson.org/~lethe/logobook/0.5.2/ ). At that time,  
>> I thought the version of Logo to be shipped with OLPC would be  
>> Arnan (Roger) Sipitakiat's version, but that doesn't seem very  
>> likely anymore. In any case, I'd prefer to use a javascript  
>> interpreter, as it could be integrated directly into the tutorial.  
>> I was getting worried I would have to write one myself, but David's  
>> seems to fit the bill perfectly.
>>
>> David, do you have a spec for the dialect of Logo you're using, so  
>> that we could sync?
> 
> No, not yet, but I am keen to develop a spec.  I'm also keen to  
> develop a tutorial, but as you've already done that, it wouldn't make  
> sense for me to duplicate your work.

When I was writing PyLogo I mostly started with UCBLogo's spec and 
manual.  I diverged from UCBLogo, because I just find 'make :var value' 
too... sensible.  And sensible things shouldn't be weird 
meta-operations, which essentially is what that is in UCBLogo.  So 'make 
:var value', 'make "var value' and 'make var value' are all equivalent.

This ends up requiring several special forms: make, localmake, local, 
and for.  Another option is having variables be functions, and each 
function be paired with a setter.  "fd var" and "makevar 10".  I think 
this is what pyologo does.  I don't have any opinion on it, really.

Another issue is how to handle OO.  Integration with the underlying 
Javascript makes OO compelling, even if you only do it in a half-hearted 
way.  Though the prototype programming of Javascript is also a nice 
match for Logo.  If you get rid of the notion that . is a valid name 
character (as is traditional in Logo, but not elsewhere) then you could 
just use normal attributes.  If you mix the function and object 
namespace, you can use "obj.method argument" and ":obj.attribute"... but 
that feels a bit awkward to me.

If I was going to design a new Logo language, I'd probably diverge from 
tradition in ways to make it more like traditional languages, in just a 
couple ways.  First, *something* with OO.  What exactly, I'm not sure. 
Second, well, that make special-form stuff.  Third, something like a 
string.  I find the whole "word thing weird and awkward.  I'm not sure 
introducing a concept of symbol is worth it though.  Anyway, [a b c] can 
still parse to ['a', 'b', 'c'], while 'a b c' is a single string.  (For 
a language that is supposed to be easy to type, isn't " hard to type for 
every variable assignment?)  Making Logo just a little more like Python 
might be a good bridge to other environments.

Anyway, here's the summary of what I did with PyLogo: 
http://pylogo.org/PyLogo.html#differences-from-ucblogo

If you are interested in seeing the wider variety of what dialects do, 
Elica might be a good example of OO.  NetLogo is a bit weird to me; I 
feel like they've made too many compromises with the language.

Integration with Javascript would be great.  I'd love if you could not 
just do graphics, but also interactive applications.  Given a pretty 
dumb server (e.g., something DAV-like), or something like Google Gears, 
you could really create a pretty substantial application entirely in 
Javascript, or with good enough integration, in Logo in Javascript in HTML.

-- 
Ian Bicking : ianb at colorstudy.com : http://blog.ianbicking.org


More information about the Library mailing list