ToonTalk

Last updated
ToonTalk
Paradigm concurrent constraint logic
Designed by Ken Kahn
Developer Ken Kahn
First appeared1995
Stable release
3.0 / {2009}
Platform Desktop is Microsoft Windows and ToonTalk Reborn is HTML5
License Versions 1.0 and 2.0 had commercial licenses from several different publishers worldwide, but version 3.0 is now free. ToonTalk Reborn is BSD 3.0
Filename extensions .tt for Desktop ToonTalk
Website www.toontalk.com
Major implementations
ToonTalk IDE and ToonTalk Reborn for the Web
Dialects
Desktop ToonTalk and ToonTalk Reborn for the Web
Influenced by
Janus; Actor model

ToonTalk is a computer programming system intended to be programmed by children. The "Toon" part stands for cartoon. The system's presentation is in the form of animated characters, including robots that can be trained by example. It is one of the few successful implementations outside academia of the concurrent constraint logic programming paradigm.

It was created by Kenneth M. Kahn in 1995, [1] and implemented as part of the ToonTalk IDE, [2] a software package distributed worldwide between 1996 and 2009. Since 2009, its specification is scholarly published [3] and its implementation is freely available.

Beginning 2014 a JavaScript HTML5 version of ToonTalk called ToonTalk Reborn for the Web [4] [5] [6] has been available. It runs on any modern web browser and differs from the desktop version of ToonTalk in a few ways. ToonTalk programs can run on any DOM element and various browser capabilities (audio, video, style sheets, speech input and output, and browser events) are available to ToonTalk programs. Web services such as Google Drive are integrated. ToonTalk Reborn is free and open source.

Beyond its life as a commercial product, ToonTalk evolved via significant academic use in various research projects, notably at the London Knowledge Lab and the Institute of Education - projects Playground and WebLabs, which involved research partners from Cambridge (Addison Wesley Longman through their Logotron subsidiary), Portugal (Cnotinfor and the University of Lisbon), Sweden (Royal Institute of Technology), Slovakia (Comenius University), Bulgaria (Sofia University), Cyprus (University of Cyprus), and Italy (Institute for Educational Technology of the Consiglio Nazionale delle Ricerche). It was also source of academic interest in Sweden, where Mikael Kindborg proposed a static representation of ToonTalk programs [7] and in Portugal, where Leonel Morgado studied its potential to enable computer programming by preliterate children. [8]

ToonTalk was influenced by the Janus computer programming language and the Actor model. The main communication abstraction in ToonTalk is the bird/nest pair. When you (the programmer or a robot) give a thing to a bird, she flies to her nest and puts the thing in it, then returns. If one or more things already occupy the nest, the bird puts the new one underneath the others.

A ToonTalk program is a sequence of rules, where each rule has a head and a tail. The head is a pattern that can be matched against the argument, which must be a tuple. In ToonTalk's presentation, a rule appears as a robot, a program as a team of robots, and a tuple as a box that can have any number of holes or compartments in which things may be placed. The alphabet of things includes number pads, text pads, other boxes, robot teams, birds, nests, and things from some other categories. A process consists of a box with a team of robots working on it. If none of the patterns matches the box, the process suspends. Otherwise, the first rule that matches, fires. The end of the tail of the rule can either destroy the process, or continue it with the same team. In case the pattern calls for something other than an empty nest where an empty nest is present, the process suspends until some bird should place something on the nest (usually as a result of the actions of other processes). A nest with something on it matches the pattern as though the nest were not there, just the (top) something. The actions in the tail also manipulate the something rather than the whole nest. Consequently, a nest can be used to program a future.

ToonTalk can be given an imperative reading or a declarative reading. If we ignore certain constructs designed to facilitate I/O, we can see ToonTalk as not having any shared access to mutable memory. The bird/nest mechanism resembles the communication in the Actor model, but with the additional power to be able to pass nests around and for a process to hold more than one nest (which is also true in Janus). A difference between communication in the Actor model and in ToonTalk is that ToonTalk preserves the order of the messages; however, ToonTalk can also provide an indeterministic merge of message streams.

Related Research Articles

Eiffel is an object-oriented programming language designed by Bertrand Meyer and Eiffel Software. Meyer conceived the language in 1985 with the goal of increasing the reliability of commercial software development; the first version becoming available in 1986. In 2005, Eiffel became an ISO-standardized language.

A relational database is a database based on the relational model of data, as proposed by E. F. Codd in 1970. A system used to maintain relational databases is a relational database management system (RDBMS). Many relational database systems are equipped with the option of using SQL for querying and updating the database.

Object–relational mapping in computer science is a programming technique for converting data between a relational database and the heap of an object-oriented programming language. This creates, in effect, a virtual object database that can be used from within the programming language.

<span class="mw-page-title-main">F Sharp (programming language)</span> Microsoft programming language

F# is a functional-first, general-purpose, strongly typed, multi-paradigm programming language that encompasses functional, imperative, and object-oriented programming methods. It is most often used as a cross-platform Common Language Infrastructure (CLI) language on .NET, but can also generate JavaScript and graphics processing unit (GPU) code.

In computer programming, especially functional programming and type theory, an algebraic data type (ADT) is a kind of composite type, i.e., a type formed by combining other types.

In computer programming, create, read, update, and delete (CRUD) are the four basic operations of persistent storage. CRUD is also sometimes used to describe user interface conventions that facilitate viewing, searching, and changing information using computer-based forms and reports.

<span class="mw-page-title-main">Boids</span> Artificial life program

Boids is an artificial life program, developed by Craig Reynolds in 1986, which simulates the flocking behaviour of birds. His paper on this topic was published in 1987 in the proceedings of the ACM SIGGRAPH conference. The name "boid" corresponds to a shortened version of "bird-oid object", which refers to a bird-like object.

In software engineering, the terms frontend and backend refer to the separation of concerns between the presentation layer (frontend), and the data access layer (backend) of a piece of software, or the physical infrastructure or hardware. In the client–server model, the client is usually considered the frontend and the server is usually considered the backend, even when some presentation work is actually done on the server itself.

<span class="mw-page-title-main">Concurrency (computer science)</span> Ability to execute a task in a non-serial manner

In computer science, concurrency is the ability of different parts or units of a program, algorithm, or problem to be executed out-of-order or in partial order, without affecting the outcome. This allows for parallel execution of the concurrent units, which can significantly improve overall speed of the execution in multi-processor and multi-core systems. In more technical terms, concurrency refers to the decomposability of a program, algorithm, or problem into order-independent or partially-ordered components or units of computation.

In computer science, Linda is a coordination model that aids communication in parallel computing environments. Developed by David Gelernter, it is meant to be used alongside a full-fledged computation language like Fortran or C where Linda's role is to "create computational activities and to support communication among them".

An Internet bot, web robot, robot or simply bot is a software application that runs automated tasks (scripts) over the Internet, usually with the intent to imitate human activity on the Internet, such as messaging, on a large scale. An Internet bot plays the client role in a client–server model whereas the server role is usually played by web servers. Internet bots are able to perform tasks, that are simple and repetitive, much faster than a person could ever do. The most extensive use of bots is for web crawling, in which an automated script fetches, analyzes and files information from web servers. More than half of all web traffic is generated by bots.

The actor model in computer science is a mathematical model of concurrent computation that treats an actor as the basic building block of concurrent computation. In response to a message it receives, an actor can: make local decisions, create more actors, send more messages, and determine how to respond to the next message received. Actors may modify their own private state, but can only affect each other indirectly through messaging.

A tuple space is an implementation of the associative memory paradigm for parallel/distributed computing. It provides a repository of tuples that can be accessed concurrently. As an illustrative example, consider that there are a group of processors that produce pieces of data and a group of processors that use the data. Producers post their data as tuples in the space, and the consumers then retrieve data from the space that match a certain pattern. This is also known as the blackboard metaphor. Tuple space may be thought as a form of distributed shared memory.

Web scraping, web harvesting, or web data extraction is data scraping used for extracting data from websites. Web scraping software may directly access the World Wide Web using the Hypertext Transfer Protocol or a web browser. While web scraping can be done manually by a software user, the term typically refers to automated processes implemented using a bot or web crawler. It is a form of copying in which specific data is gathered and copied from the web, typically into a central local database or spreadsheet, for later retrieval or analysis.

A webform, web form or HTML form on a web page allows a user to enter data that is sent to a server for processing. Forms can resemble paper or database forms because web users fill out the forms using checkboxes, radio buttons, or text fields. For example, forms can be used to enter shipping or credit card data to order a product, or can be used to retrieve search results from a search engine.

Natural-language programming (NLP) is an ontology-assisted way of programming in terms of natural-language sentences, e.g. English. A structured document with Content, sections and subsections for explanations of sentences forms a NLP document, which is actually a computer program. Natural language programming is not to be mixed up with natural language interfacing or voice control where a program is first written and then communicated with through natural language using an interface added on. In NLP the functionality of a program is organised only for the definition of the meaning of sentences. For instance, NLP can be used to represent all the knowledge of an autonomous robot. Having done so, its tasks can be scripted by its users so that the robot can execute them autonomously while keeping to prescribed rules of behaviour as determined by the robot's user. Such robots are called transparent robots as their reasoning is transparent to users and this develops trust in robots. Natural language use and natural-language user interfaces include Inform 7, a natural programming language for making interactive fiction, Shakespeare, an esoteric natural programming language in the style of the plays of William Shakespeare, and Wolfram Alpha, a computational knowledge engine, using natural-language input. Some methods for program synthesis are based on natural-language programming.

Haskell is a general-purpose, statically-typed, purely functional programming language with type inference and lazy evaluation. Designed for teaching, research, and industrial applications, Haskell has pioneered a number of programming language features such as type classes, which enable type-safe operator overloading, and monadic input/output (IO). It is named after logician Haskell Curry. Haskell's main implementation is the Glasgow Haskell Compiler (GHC).

QUEL is a relational database query language, based on tuple relational calculus, with some similarities to SQL. It was created as a part of the Ingres DBMS effort at University of California, Berkeley, based on Codd's earlier suggested but not implemented Data Sub-Language ALPHA. QUEL was used for a short time in most products based on the freely available Ingres source code, most notably in an implementation called POSTQUEL supported by POSTGRES. As Oracle and DB2 gained market share in the early 1980s, most companies then supporting QUEL moved to SQL instead. QUEL continues to be available as a part of the Ingres DBMS, although no QUEL-specific language enhancements have been added for many years.

Janus is a computer programming language partially described by K. Kahn and Vijay A. Saraswat in the paper "Actors as a special case of concurrent constraint (logic) programming" in 1990. It is a concurrent constraint language without backtracking.

References

  1. Kahn, Ken (22–25 April 1995). "Metaphor Design - Case Study of An Animated Programming Environment" (PDF). Computer Game Developers' Conference (CGDC) Proceedings, 1995, 9th Annual World Famous. Computer Game Developers Conference. Computer Game Developers Conference. p. 241.
  2. Kahn, Ken (1996). "ToonTalk™—An Animated Programming Environment for Children" (PDF). Journal of Visual Languages & Computing. 7 (2): 197–217. doi:10.1006/jvlc.1996.0011. ISSN   1045-926X.
  3. Morgado, Leonel; Kahn, Ken (2008). "Towards a specification of the ToonTalk language" (PDF). Journal of Visual Languages and Programming. 19 (5): 574–597. doi:10.1016/j.jvlc.2007.10.002. ISSN   1045-926X. S2CID   13442755.
  4. Kahn, Ken (2014). "TOONTALK REBORN Re-implementing and re-conceptualising ToonTalk for the Web" (PDF). Proceedings of the Constructionism 2014 Conference.
  5. Kahn, Ken (2016). Integrating programming languages with web browsers. Suksapattana Foundation. pp. 141–149. ISBN   978-616-92726-0-1.
  6. Kahn, Ken (2016-01-01). "A Demonstration of ToonTalk where Children Build Programs by Demonstration in a Game World". Proceedings of the 15th International Conference on Interaction Design and Children. IDC '16. New York, NY, USA: ACM. pp. 676–679. doi:10.1145/2930674.2938611. ISBN   9781450343138. S2CID   19973661.
  7. Mikael, Kindborg (2001). Representing ToonTalk programs as comic strips. Playground International Seminar. Casa de Vilar, Porto, Portugal.
  8. Morgado, Leonel (2005). Framework for Computer Programming in Preschool and Kindergarten (doctoral thesis). Universidade de Trás-os-Montes e Alto Douro, Vila Real, Portugal. hdl:10348/5344.