The Computer Science behind ToonTalk

ToonTalk is an interpreter for a concurrent constraint programming language. Concurrent constraint programming is a synthesis of concurrent logic programming and constraint logic programming. (See, for example, Saraswat). The class of languages for which programs are roughly interchangeable with ToonTalk programs include Oz, E-Lang, Janus, Flat Guarded Horn Clauses, KL1/KLIC, Flat Concurrent Prolog, Parlog, and Strand. The syntax of all these languages is textual while ToonTalk has an action-oriented video game animation syntax. The programming environment is completely different as well. In ToonTalk, the process of constructing, testing, and debugging programs closely resembles playing a video game. "From Prolog and Zelda to ToonTalk" is a paper discussing these ideas in detail.

Pictorial Janus is a visual version of Janus in which pictures are used for source code and the execution of a program can be seen as an animation. ToonTalk differs from Pictorial Janus (and all visual programming languages) in that the source code is animated and concrete as opposed to the static and abstract syntax of visual programming languages. (See Pictorial Janus ftp site and Paderborn University web page.)

The computational model underlying ToonTalk supports the dynamic creation and termination of asynchronous processes. First-class send and receive capabilities provide a means for these processes to communicate and synchronize. All state is local to processes. There is a close relationship between concurrent object-oriented programming languages (including actor languages) and ToonTalk. (See ToonTalk papers.)  Here is an essay about how ToonTalk is concurrent and why it is difficult to extend conventional languages to be concurrent.

ToonTalk includes a puzzle game that includes a sequence of over 60 puzzles. The connections to computer programming and computer science for each puzzle are described here.

One way to understand ToonTalk is that it provides "concretizations" of computational abstractions. For each computational abstraction ToonTalk provides a tangible equivalent analog.

Computational Abstraction ToonTalk Concretization
computation city
actor or process or object

house

methods robots
method preconditions contents of thought bubble
method actions actions taught to robot
tuples or messages or vectors boxes
comparison tests scales
actor spawning loaded trucks
actor termination bombs
constants numbers, text, and pictures
channel transmit capabilities birds
channel receive capabilities nests
program storage notebooks

Another way to understand the computational model of ToonTalk is to consider what you can train robots to do:

· send a message (i.e. tell a constraint)

by giving a box or pad to a bird,

· spawn a new agent

by dropping a box and a team of robots into a truck,

· perform simple primitive operations (e.g. +, -, *)

by dropping a pad on a pad,

· copy an item

by using a magician's wand,

· terminate an agent

by setting off a bomb,

· change the contents of a tuple

by taking out items and placing new ones.

home | search | purchase | manual | news | info | games | faq | support | downloads | endorsements | press | contact us