How should the ideal language support concurrent and distributed computation?
Over the last ten years, I've had many technical discussions about why I believe that ToonTalk's model of concurrency is better than that provided by multi-threaded LOGO implementations (including StarLogo and NetLogo) and Squeak.
Very briefly, what we want are not just multiple processes that cause side effects on the environment, but processes that also consume and produce data. These processes need ways to communicate, synchronize, and coordinate via primitives that are accessible by non-expert programmers. For those who want to understand this issue in depth, here is an excerpt from a draft of a paper about using ToonTalk to explore infinity and cardinality.
Concurrency combined with destructive operations upon shared data leads to race conditions and other very hard to track down bugs. Attempts to introduce locks and atomic actions add complexity and the risk of deadlock. I strongly believe that destructive operations upon shared data should not be part of any language with a general model of concurrency. And non-general models of concurrency such that of StarLogo are of use in only limited situations.
Furthermore, I believe we want to support children in building distributed computations. This need not add complexity to the system if the model of concurrency generalizes to processes running on different computers communicating over a network, as is the case in ToonTalk. Despite limitations of the partial implementation of distributed computing in ToonTalk, various networked games have been built such as battleships and two-player Pong. Swiss high schools students have implemented a chat system in ToonTalk.
Also the communication mechanism used by programs should be of use for human-to-human communication as well. In the Playground Project young children used ToonTalk's long-distance birds to exchange their ToonTalk games as well as text messages.
The concurrency of a programming language should have a solid theoretical foundation such as pi calculus.
home | search | purchase | manual | news | info | games | faq | support | downloads | endorsements | press | contact us