(picture)

November 12, 2002

Meta

Sam points to Lambda who points to a great paper which I've not read for a while: "Growing a Language":

If I want to help other persons to write all sorts of programs, should I design a small programming language or a large one?
I stand on this claim: I should not design a small language, and I should not design a large one. I need to design a language that can grow. I need to plan ways in which it might grow - but I need, too, to leave some choices so that other persons can make those choices at a later time.
Meanwhile Dylan's learning Squeak e-toys; that seems to be a nice way to start "in the middle" with abstractions which don't leak too much. Certainly, via its Smalltalk heritage, growable (as we'll see much more, I'm sure, when David Reed and Alan Kay start telling the world about their project).

Right now, though, I'm fascinated by the blurred line between language and platform. And I've still not exhausted JavaScript. Groove has this unique model of distributed, transactional system "that, in essence, distributes *method calls* as opposed to data". We expose that through services, interfaces, APIs. Sometimes-leaky abstraction layers. If you put the abstraction into the language itself, would that make it waterproof? Is there a way to keep the value of a hererogeneous (language-agnostic, not-too-sandboxed) development environment, but provide access to waterproof abstractions - not necessarily interfaces or classes - in such a way that you don't need to think about them?

Meta means that you step back from your own place. What you used to do is now what you see. What you were is now what you act on. Verbs turn to nouns.