In the land of the living, computer programs are made out of objects. A program isn’t a directory full of text files, it’s a web of objects with pointers to each other.
But here’s what I see when I look at modern programming environments:
When I look at that, I don’t see my objects. I see a tool. A tool with a bunch of knobs and dials that I can fiddle with. I get the sense that my objects are behind the scenes somewhere, hiding deep in the bowels of my computer, and that the tool’s knobs and dials are somehow connected to the objects.
In contrast, here’s what Avocado looks like:
(Those gray boxes are objects. I made a JavaScript object with an ‘x’ attribute pointing to the number 3, a ‘y’ attribute pointing to the number 4, and an ‘add’ attribute containing a function. And the object inherits from Object.prototype, which is the standard root of the JavaScript inheritance hierarchy.)
This is how programming is done in Avocado – by getting your hands on the objects and doing things to them. If I want to change the object (say, by adding an attribute), I go right up to the object and tell it to add a new attribute. If I want to ask the object a question (i.e. call one of its functions), I go to the object and type in my question. If I ask the object how it fits into the inheritance hierarchy, the objects whoosh around on the screen to arrange themselves into a tree shape.
My program is made of objects. I want it to look and feel like it’s made of objects.


