User Tools

Site Tools


Sidebar

Jump to
AmbientTalk
CRIME
iScheme

at:tutorial:preface

This is an old revision of the document!


Preface

AmbientTalk is a distributed programming language especially geared towards developing applications deployed on mobile networks. The language combines elements from languages such as Scheme (closures), Smalltalk (pure OO), Self (prototypes and delegation) and actor languages.

History and design rationale

The AmbientTalk language saw the light in 2005, when it was implemented by Jessie Dedecker as part of his PhD research. AmbientTalk was originally built as a distributed extension of another language named Pic% (pronounce: Pic-oh-oh). Pic% itself is a prototype-based object-oriented extension of the language Pico, a language developed by Prof. Theo D'Hondt in 1996. Both Pico and Pic% were originally developed for education purposes in the context of introductory programming courses for students in the faculty of sciences.

Pico borrowed many of its design principles and concepts from the Scheme programming language. The foremost design concern of Pico was indeed to build a simple and extensible language based upon simple rules. Since its original conception in '96 and its use in teaching, Pico has also been used as a research artifact. Many offspring exist in which particular language features have been investigated. AmbientTalk is one such offspring, used in the context of exploring distributed programming abstractions for mobile ad hoc networks.

The AmbientTalk language described in this tutorial is actually AmbientTalk/2, a successor of the original 2005 implementation by Jessie Dedecker. Although AmbientTalk/1 was successful in terms of providing novel language features for mobile ad hoc networks, it lacked several important language features that hampered the development of larger software applications (e.g. a module system, exception handling, etc.)

In 2006, Tom Van Cutsem and Stijn Mostinckx started the AmbientTalk/2 project, which resulted in the present version of AmbientTalk. They redesigned most aspects of the original language, including the syntax, to make AmbientTalk more accessible to people unfamiliar with the Pico language. AmbientTalk/2's main purpose is still to be used as a research artifact for PhD students at the programming technology lab. On the other hand, from the beginning AmbientTalk/2 was conceived as a usable, practical programming language, which could be used to construct large and real-life software. This design decision motivated the inclusion of such features as a module system and symbiosis with the underlying Java Virtual Machine, for example.

Perhaps the most significant change from AmbientTalk/1 to AmbientTalk/2 is the incarnation of actor concurrency in the language. In AmbientTalk/1 - inspired by other actor languages such as ABCL/1 - actors were represented as distinct so-called active objects, and the language explicitly distinguished those active objects from ordinary, passive objects. AmbientTalk/2, on the other hand, is based on the notion of actors as “vats” or “containers” of ordinary objects as introduced in the E programming language. As you will read in the subsequent chapters of the tutorial, this design change shifted the emphasis from actors back onto regular objects, which in the general case makes AmbientTalk/2 programs more reusable and easier to understand.

Today, AmbientTalk/2 is being maintained by a number of PhD students and postdoctoral fellows of the ambient research group of the programming technology lab. The language is still being used as a research vehicle, although it is accessible to the general public and can be used to develop realistic distributed applications.

About this tutorial...

This tutorial introduces the programming language AmbientTalk from the basics up to the distribution model. The tutorial does not attempt to be a comprehensive reference manual but rather tries to give you hands-on experience in using the main features of the language.

at/tutorial/preface.1184135657.txt.gz · Last modified: 2007/07/11 08:43 (external edit)