[IAEP] Turtles All The Way Down
NoiseEHC
NoiseEHC at freemail.hu
Tue May 24 17:12:37 EDT 2011
No. OOP is overhyped anyway... It only helps for namespacing, and
primitive values where encapsulation works. Since children will not make
reusable libraries mostly I think there is no point making things more
complex as they already are. BTW I did not find the second version more
readable but it can be only me.
On 2011.05.24. 19:11, C. Scott Ananian wrote:
> On Fri, May 20, 2011 at 11:09 AM, Alan Kay<alan.nemo at yahoo.com> 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
>
More information about the IAEP
mailing list