Lately I’ve been mulling over a thought experiment for what a new fundamental object model for programming might look like, and that has me scheming about pyramids.
All kidding aside, the concept of a four-faced object is an interesting idea.
Face #1: A visual representation of the object, whether that’s HTML+CSS, text for the command line, a GUI widget, whatever.
Face #2: A message inbox/outbox for communicating with the rest of the world, which literally looks like an email inbox and can be interacted with like one, but is also processed programmatically via an actor model embedded within the object. Maybe there would be some sort of “address book” for defining collaborators, too.
Face #3: A spreadsheet-like grid that looks and acts like a spreadsheet! This is where 100% of shared state for the object would reside. There would be no instance variables, but there could be named columns or rows, computed fields, a one-way realtime data flow, and maybe even multiple sheets per “document”
Face #4: A computational dashboard, in which any helper functions, message processing logic, and other bits of the underplumbing would live.
Although I use the word object here, that doesn’t necessarily mean “all the code in one class definition”, but what it does mean is a way of organizing and packaging objects so that you can edit, run, and interact with the “whole pyramid” as if if it were a single concrete entity.
And before you ask, I am absolutely not suggesting the idea of visually representing this sort of an object as an actual pyramid. That is not part of my scheme. 🙂
I need to do some prototyping around this to see if it has any merit to it. As a thought experiment, it feels both promising and a bit fuzzy in my mind. Maybe I can try something where I build a four panel split screen and do some trivial experiments within it?
More to come in a future post, I suppose.