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
Abstract
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