This is an old revision of the document!
Ambient-Oriented Programming is a paradigm for programming peer-to-peer interactions between mobile and/or embedded devices.
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).
Ambient-Oriented programming is a paradigm geared towards mobile computing. Mobile hardware (such as cell phones) is mostly equipped with wireless networking, allowing it to collaborate with nearby devices in its environment. However, because wireless network links are volatile (basically: when devices move out of wireless range, the connection drops), network failures occur much more frequently than in traditional networks. The basic assumption of the Ambient-Oriented Programming paradigm is that languages should incorporate network failures at the heart of their programming model, and not treat them as “exceptions”.
Our own experimental language, AmbientTalk, differs from most traditional languages because:
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.
The screencast below shows how to implement a simple echo server for mobile ad hoc networks. It introduces 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 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.
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.