User Tools

Site Tools


Sidebar

Jump to
AmbientTalk
CRIME
iScheme

start

This is an old revision of the document!


Ambient-Oriented Programming is a novel programming paradigm for programming spontaneous interactions between mobile and/or embedded devices.

:at:atlogo.jpg This page is also the home of AmbientTalk, our experimental programming language to develop applications for software running on mobile ad hoc networks. To get started, you can read the tutorial or the essence of AmbientTalk in 10 steps. To experiment with the language, you can download IdeAT, our Eclipse plug-in for AmbientTalk or simply download a stand-alone version of the interpreter and develop code using your favorite text editor (an Emacs mode and a TextMate bundle are available).

AmbientTalk is now open-sourced on Google Code under an MIT License!

What is AmbientTalk about?

Ambient-Oriented programming is a programming paradigm whose properties are derived from the characteristics of hardware platforms for mobile computing. Mobile hardware devices are often provided with wireless networks facilities, allowing them to engage in collaboration with nearby devices in their environment. However, the autonomous nature of these devices as well as the volatile connections over their wireless infrastructure has its repercussions on the software that employs them. The basic assumption of the Ambient-Oriented Programming paradigm is that languages should incorporate possible network failures at the heart of their programming model.

From this observation, several characteristics of programming languages can be derived. Our own experimental language, AmbientTalk, differs from most traditional languages because:

  • It employs a purely event-driven concurrency framework, founded on actors.
  • It abandons the RPC abstraction in favor of asynchronous, non-blocking message passing. Because the system automatically buffers such messages while the receiver of the message is disconnected, the programmer can make abstraction from temporary network failures by default.
  • It has built-in programming language constructs for objects to discover one another in the local ad hoc network. Peer-to-peer service discovery is built into the language.
  • It features a functional, object-oriented kernel language built upon the principles of prototype-based programming (based on Scheme, Self and Smalltalk). The kernel language is reflective and hence extensible from within the language itself.

Check out the introduction to AmbientTalk for a hands-on example showing you the benefits in actual code. Alternatively, glance at the key expressions in the language to get a 60-second overview of the language's design and intents.

You can also watch the following screencast where we show how to implement a simple echo server for mobile ad hoc networks. We introduce AmbientTalk's support for peer-to-peer service discovery, asynchronous messages, futures and how remote object references are resilient to network failures by default:

AmbientTalk Screencast: a simple echo server from Tom Van Cutsem on Vimeo.

AmbientTalk is not our only research artifact. We have ported the ideas of Ambient-oriented Programming to Scheme, leading to the iScheme language. There is also CRIME, a data-driven programming language which explores the logic programming paradigm to tackle similar coordination issues in mobile ad hoc networks.

AmbientTalk's mirages have inspired the development of proxies in ECMAScript harmony.

Contact

The AmbientTalk mailing list, for questions and general information on AmbientTalk: . If you want to contact any one of us personally, please see the People pages for personal contact details.

Further Reading

If you're interested in the Ambient-oriented Programming paradigm in general, check out the papers on AmOP page. The seminal OOPSLA2005 Onward! paper pretty much sums up our earliest musings on AmOP. A year later, at ECOOP2006, we refined these ideas and applied them to our first AmbientTalk prototype.

If you're interested in the AmbientTalk programming language, check out the papers on AmbientTalk page. The ECOOP2006 paper is the first paper describing AmbientTalk in-depth. However, since mid-2006, the language has been extensively revised. A good starting point for reading about the revised language is the SCCC2007 paper.

Research Topics

start.1280573216.txt.gz · Last modified: 2010/07/31 12:57 (external edit)