Darwin Among the Prototypes

Morphtron, my current cross-language prototype-based programming framework was influenced by ideas I first encountered in Framework the award winning product from Ashton-Tate written by Xerox PARC alum Robert Carr. Framework was and remains the most under-recognized Smalltalk Meme carrier.

Before they were called prototypes, instance-oriented approaches to organizing objects had become popular in AI during the 1980’s under the label of frame-based knowledge representation. At the time my career was just beginning to evolve from building spacecraft mechanisms to designing automated testing systems for them so I my understanding of computer languages wasn’t very deep. Even so, in spite of the fact that the people I saw as “experts” were more focused on the differences, objects, frames and entities all seemed more alike than different to me. Using Framework and dBASE, I combined them into something called the Knowldge Oriented Programming System(KOPS). Not long after KOPS was born Ashton-Tate began shooting itself in the foot so I began moving it to Smalltalk/V but had a great deal of trouble because the prototype ideas didn’t work well in a class based environment. When Digitalk introduced their visual programming tool PARTS which used unique instance methods I began to see that one could make Smalltalk more malleable. Around that same time, I read about Self, then Object-Oriented Programming With Prototypes and after that Squeak showed up with Etoys and Wonderland carrying the prototype meme. Today people are seeing prototypes as the future of object-oriented programming and Traits have found their way into the Squeak mainstream. Thanks in large part to Javascript I’d been able to experiment extensively with organizing objects without classes

All organizational functions carried out by classes can be accomplished in a simple and natural way by object inheritance in classless languages, with no need for special mechanisms. A single model—dividing types into prototypes and traits—supports sharing of behavior and extending or replacing representations. A natural extension, dynamic object inheritance, can model behavioral modes. Object inheritance can also be used to provide structured name spaces for well-known objects.
Classless languages can even express “class-based” encapsulation. These stylized uses of object inheritance become instantly recognizable idioms, and extend the repertory of organizing principles to cover a wider range of programs.
Self: Organizing Programs Without Classes

With Morphtron I had realized that one could achieve many of the same objectives without having support in the core language. This is because the memes are more fundamental than any particular implementation.

In a chapter on Symbiogenesis, George Dyson chronicles the evolutionary history of cyberspace going from order codes to subroutines and languages executing in operating systems and across networks:

The introduction of distributed object-oriented programming languages … is enabling numerical symbioorganisms to roam, reproduce, and execute freely across the computational universe as a whole. … Nils Barricelli, in 1985, drew a parallel between higher level object-oriented languages and the metalanguages used in cellular communication, but he put the analogy another way: “if humans, instead of transmitting to each other reprints and complicated explanations, developed the habit of transmitting computer programs allowing a computer-directed factory to construct the machine needed for a particular purpose, that would be the closest analogue to the communication methods among cells of various species”

“… In the game of life and evolution there are three players at the table: human beings, nature, and machines. I am firmly on the side of nature. But nature, I suspect, is on the side of the machines. …”

Darwin Among the Machines: The Evolution of Global Intelligence

4 Comments »

  1. Javascript - Still Object-Oriented :: Darwin Among the Prototypes said,

    February 10, 2008 @ 11:06 pm

    […] my interest in prototypes that I found Javascript appealing! The name of this entry is taken from a post on my Squeak blog that traces my history of exploring prototype-based programming. One thing that most of these […]

  2. Randal L. Schwartz said,

    February 11, 2008 @ 12:33 am

    You missed one of the more interesting applications of prototypes: the Newtonscript programming language for the Apple Newton!

  3. Alan Lovejoy said,

    February 11, 2008 @ 6:57 pm

    People are machines, too!

  4. Laurence said,

    February 11, 2008 @ 8:43 pm

    @Randal - you’re right, I knew about it - our buddy Dan was big on it but I had a Sony MagicCap and never played with the Newton

    @Alan - true if one takes a very broad view of machines as transformers of energy. From that perspective all organic things and many larger inorganic(oceans, planets, stars etc.) bodies are clearly machines as well. Even bits, being made up of the same real physical stuff as humans, are machines - science and religion may have more in common than either likes to admit :-) In any case I’m all for expanding the narrower, industrial-era view of machines as long as we keep strictly biological humans in the loop

RSS feed for comments on this post · TrackBack URI

Leave a Comment

FireStats icon Powered by FireStats