On Fri, May 20, 2011 at 11:09 AM, Alan Kay <[email protected]> wrote: > Smalltalk actually got started by thinking about a way to make a child's > Logo-like language with objects and pattern matching that could express its > own operating system and environment. > > It is very tricky to retain/maintain readability (so the first Smalltalk was > also an extensible language not just semantically but syntactically). > > With a tile language, this is really worth thinking about, since using tiles > suggests ways to extend both the form and the meaning of the tiles.
I've written a follow-up post, musing on the "readability" aspect Alan mentioned above: http://cananian.livejournal.com/64330.html Is it worth trading a very simple and direct syntax like: var Point = {}; Point.x = 0; Point.y = 0; var Point3D = Object.create(Point); Point3D.z = 0; for the more readable: Class("Point", { has: { x: {is: "ro"}, y: {is: "rw"}, }, }) Class("Point.ThreeD", { isa: Point, has: { z: {} }, }) at the cost of introducing additional complexity into the object creation process. The complexity is in a library, so the base language is kept small -- but it's still more turtles thrown onto the stack that you have to understand. Returning to Alan's point about tiles -- the nice thing is that you could define a custom tile for the Class(....) syntax above, with pretty selectors to help you select parent class, slot attributes, etc. But perhaps it's better just to keep the conceptual model small -- then you don't need fancy GUI widgets to help you out. For a more concrete example, you might want to read through: https://github.com/cscott/TurtleScript/blob/beeba5c138d88af40297f93689ecbe7721724819/crender.js#L333 starting at line 333 or so. That's a widget library written in Simplified JavaScript/TurtleScript which uses prototype inheritance extensively. You can do clever things like swipe the implementation of a function from a totally different class; see how we do "multiple inheritance" around line 661. Is the Joose syntax an improvement? --scott -- ( http://cscott.net ) _______________________________________________ IAEP -- It's An Education Project (not a laptop project!) [email protected] http://lists.sugarlabs.org/listinfo/iaep
