The believe behind this work is that new programming paradigms could provide end-users increased control over computers. Unfortunately, the notion of programming is stigmatized with frustrating experiences often resulting from our interaction with "programmable" consumer electronic devices such as VCRs or automatic garden sprinkler systems. While probably no programming language, visual representation, paradigm, or environment in the world can really eliminate the complexity resulting from dealing with intricate problems there still can be ways to make the programming of simple problems much more accessible to end-users. Our philosophy of Programming above C Level reflects the departure from traditional programming approaches geared for professional programmers along a number of dimensions.

Interaction before Functionality

From the very beginning (1989) the architecture of Agentsheets supported opportunistic design strategies. This flexible architecture allows users to deal with a wide range of application domains ranging from interactive simulation games to artistic media.

Agentsheets allow users to doodle by quickly creating a number of agents with some depictions. Even before these agents are programmed in any form users can put them into the Agentsheet (a sheet of agents) and play with them in a way very similar to using numbers in spreadsheets. In this context Agentsheets serves as medium to create interacting collections of "objects to think with" [Papert].

Graphical Rewrite Rules

Over time a large number of Agentsheets applications got created using AgenTalk, an object-oriented programming language. Inspired by BitPICT [Furnas] and later ChemTrains [Bell] we introduced in 1990 the notion of graphical rewrites to Agentsheets in order to make programming more accessible to end-users. Agentsheets was the first system to combine the notions of agents, graphial rewrite rules and programming by example. Unlike previous rewrite rule systems the rules were associated with the individual objects, i.e., the agents, instead of entire scenes. This turned out to be helpful because it reflects the autonomous nature of agents.

Example: A rule that makes a car move on a road, , is created by simply moving the car on a road forward

A number of new rewrite rule system projects emerged. I collaborated with Allan Cypher and David C. Smith on KidSim (now called Cocoa) a very nice rewrite rules system especially aimed at children.

Bending Icons and Rules

In many cases families of related icons need to be created. This process can be very tedious. Based on our experience with users we added automatic transformation of icons including icon bending allowing users to draw a single icon (the one on the left in the Figure below) and then, in a single step to create an entire family of icons:

In some cases rewrite rules are too literal resulting in potentially large number of rules We added some semantics and the ability to generated rewrite rules through analogies [Repenning, 1995] in order to overcome some of the tricky issues with rewrite rules. For instance a train can be defined to follow train tracks like cars follow roads:

Analogies allow end-users to create new behaviors efficiently without having to introduce abstractions. The combination of Icon, Rule bending and analogies led to the SimCity in 10 minutes project in which we showed that we could avoid the combinatorial explosion of rules by adding semantics to rewrite rules.

Apple Inc.: Productification

In the context of a TRP grant and under the heading of Jim Spohrer Apple Computer Inc. is supporting the productification of Agentsheets. Jim Ambach has created AgenSK8, an extended SK8 version of Agentsheets. He also prototyped parts of a new programming paradigm called Visual AgenTalk. The goal of this effort is to create a commercial cross-platform version of Agentsheets.

Larger Spinn-off Projects

A number of larger projects have come out using Agentsheets to create domain-oriented design environments:

Tactile Programming: Visual AgenTalk

Based on experience with some of the larger Agentsheets projects we wanted to create a programming paradigm that would be still very accessible to end-users but more powerful than graphical rewrite rules. The graphical rewrite rules work great for graphical manipulation such as moving objects but help very little with other types of interactions. Visual AgenTalk is a completely new Tactile programming paradigm that allows end-users to deal with:

Behavior Processing

You may wonder how, these days, one can one write so much about programming and the web without mentioning some coffee related term? We claim that:

Java is to networking what Postscript is to printing

Java, like Postscript, is an important "under the hood" technology. It can do many things but it is not an end-user tool. By now we have gathered a lot of experience with word processors serving as usable technology to create static documents without forcing users to think about Postscript.

Now the question is what would a behavior processor do for users? Based on tactile programming behavior processors can elevate the process of programming onto the level of designing and manipulating behaviors. The combination of Agentsheets with Visual AgenTalk is a first step towards a behavior processor. In the context of the TRP grant we are working with Apple on a version of Agentsheets based on Java.

Jim Ambach has created a first version of, the Agentsheets Java player. This allows users to author/process complex behaviors in with the designer version of Agentsheets for now on a Macintosh. Finished behaviors and entire interactive simulations can be compiled into Java and then run on all platforms supporting Java.

SimCity is a trademark of Maxis