From Prolog and Zelda to ToonTalk

This paper appeared in the Proceedings of the International Conference on Logic Programming 1999, edited by Danny De Schreye, MIT Press, 1999.

Keywords: animated programming, logic programming, concurrent constraint programming


    ToonTalk looks like a video game. This is not surprising since its design and user interface were strongly influenced by games like The Legend of Zelda: A Link to the Past and Robot Odyssey. What may be more surprising is that ToonTalk is a programming language and environment based upon ideas that have evolved from Prolog over a period of nearly twenty years.
    ToonTalk is a synthesis of ideas from concurrent constraint programming, video games, and programming languages for children. In the spirit of Logo, ToonTalk is an attempt to take the best ideas in computer science and make them accessible to children. When Logo was designed over thirty years ago, the best programming language ideas could be found in the Lisp language. The design of ToonTalk is based upon the belief that the best programming language ideas can be found in concurrent logic programming and concurrent constraint programming languages like Janus, Linear Janus, FGHC, Vulcan, DOC, AKL, and Oz. These languages, in turn, borrow heavily from earlier languages like Concurrent Prolog and Parlog that in turn grew out of research on Prolog.
    While these languages have many desirable aspects - they are powerful, elegant, theoretically well grounded, and expressive - they are not generally considered easy to learn. If it takes substantial time and effort for computer scientists to understand one of these languages, then how can one hope to make the underlying ideas accessible to young school children?
An answer lies with video games. Many of these games present a large and complex world with many kinds of objects and possible actions. And yet, children as young as 4 years old learn to master these game worlds without help. The fundamental idea underlying ToonTalk is that a game world can be created in which the objects and actions map directly onto programming language constructs. In ToonTalk, a clause becomes a robot, a term or tuple becomes a box, a number becomes a pad, and so on. The act of putting a box and a team of robots into a truck becomes a way of expressing a process spawn or procedure call. The act of dropping a number pad on another number pad becomes a way of expressing an arithmetic operation. And so on.

Download the entire paper as an Adobe Acrobat file (PDF)  - 1.75MB

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