User Tools

Site Tools


start

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
start [2007/05/02 10:00]
tvcutsem *
start [2021/09/24 10:20] (current)
elisag
Line 1: Line 1:
-====== Welcome to Ambient-Oriented Programming ====== +~~NOTOC~~
-Welcome to our website on Ambient-Oriented Programming, an exciting new paradigm of computing geared towards promoting and programming spontaneous interactions between different mobile and/or embedded devices.+
  
-This webpage is also the home of AmbientTalk, our experimental programming language to develop such applications. The current implementation of AmbientTalk is relatively stable. The best way to get started is to [[at:download|download]] the language and to read the [[at:tutorial:tutorial|tutorial]].+[[http://ambienttalk.googlecode.com|{{:at:fixed_atlogo.png?80 }}]] Ambient-Oriented Programming is a paradigm for programming peer-to-peer mobile applications. This page is also the home of AmbientTalk, our experimental programming language for mobile peer-to-peer applications.
  
-===== What is AmbientTalk all about? ===== +<note>
-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 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. Informally we state that an ambient-oriented language is : +AmbientTalk is now [[https://gitlab.soft.vub.ac.be/ambienttalk/ambienttalk/wikis/home |open-sourced]] on GitLab under an [[Wp>MIT_License|MIT License]]! 
-  * **Prototype-based** The mismatch between classes and distribution is well-documented and further aggravated in the context of mobile computing. +
-  * **Non-blocking** To avoid harming the autonomy of the mobile devices, no device should be blocked awaiting either to send a message or receive a result. +
-  * **Communication-Aware** To encompass network failures, objects should be able to keep a log of their own activities, allowing for error recovery. +
-  * **Resource-Aware** Service discovery is an integral part of any ambient-oriented language since resources are encountered dynamically in the ever-changing network topology surrounding a device.+
  
-Check out the [[at:introduction|introduction]] to AmbientTalk for a hands-on example showing you the benefits in actual code.+[[https://gitlab.soft.vub.ac.be/ambienttalk/ambienttalk/wikis/home|{{ :at:gitlab.png?150 }}]] 
  
-===== Contact =====+</note>
  
-  * The [[http://prog.vub.ac.be/mailman/listinfo/ambienttalk-user|AmbientTalk user list]]for questions and general information on AmbientTalk: ''ambienttalk-user at prog.vub.ac.be''If you want to contact any one of us personally, please see the [[people|People]] pages for personal contact details.+  * Read the [[at:tutorial:tutorial|tutorial]] or [[http://code.google.com/p/ambienttalk/wiki/EssenceOfAmbientTalk|the essence of AmbientTalk in 10 steps]]. 
 +  * Start programming with our [[https://plugins.jetbrains.com/plugin/17635-ambienttalk Intellij IDEA plugin]] for AmbientTalk. Note that the plugin already includes the AmbientTalk standard library (which source code can be accessed [[https://gitlab.soft.vub.ac.be/ambienttalk/atlib|here]]). 
 +  * Or, download a stand-alone version of [[at:download|the language distribution]] and develop code using your favorite text editor (an [[http://soft.vub.ac.be/pipermail/ambienttalk/2010-July/000043.html|Emacs mode]] and a [[http://soft.vub.ac.be/amop/downloads/at2textmate.zip|TextMate bundle]] are available). 
 +   * You can build your own AmbientTalk distribution by downloading the different source code projects from gitlab [[https://gitlab.soft.vub.ac.be/ambienttalk |here]] and following the configuration instructions [[https://gitlab.soft.vub.ac.be/ambienttalk/ambienttalk/-/wikis/Configuring-source-code-projects|here]].
  
-===== Further Reading =====+====== What is AmbientTalk about? ======
  
-**Ambient-Oriented Programming**Jessie DedeckerTom Van CutsemStijn MostinckxTheo D'Hondt, Wolfgang De Meuter. +Ambient-Oriented programming is a paradigm geared towards mobile computing. Mobile hardware (such as cell phones) is mostly equipped with wireless networkingallowing it to collaborate with nearby devices in its environment. Howeverbecause wireless network links are volatile (basically: when devices move out of wireless rangethe connection drops)network failures occur much more frequently than in traditional networksThe 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".
-In "OOPSLA '05: Companion of the 20th annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages and Applications. Pages 31-40. San Diego, U.S.A. ACM Press.", 2005 [ [[http://prog.vub.ac.be/Publications/2005/vub-prog-tr-05-10.pdf|download]] ]+
  
-**Ambient-Oriented Programming in AmbientTalk**, Jessie DedeckerTom Van Cutsem, Stijn Mostinckx, Theo D'Hondt, Wolfgang De Meuter.  In "Proceedings of the 20th European Conference on Object-Oriented Programming (ECOOP), Dave Thomas (Ed.)Lecture Notes in Computer Science Vol4067pp230-254Springer-Verlag.", 2006 +Our own experimental language, AmbientTalk, differs from most traditional languages because: 
-[[http://prog.vub.ac.be/Publications/2006/vub-prog-tr-06-11.pdf|download]] ]+  It employs a purely //event-driven// concurrency framework, founded on actors. 
 +  It abandons the RPC abstraction in favor of //asynchronousnon-blocking// message passing. Because the system automatically buffers such messages while the receiver of the message is disconnectedthe 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 dynamic OO kernel language built upon the principles of prototype-based programming (based on Scheme, Self and Smalltalk). The kernel language supports reflection using [[http://bracha.org/mirrors.pdf|mirrors]]which provide access to an extensive metaobject protocol, making the language extensible from within itself. 
 +  * The language syntax derives primarily from the 'curly brace' family of languagesbut it mixes in the keyworded messaging syntax from Smalltalk as wellThistogether with AmbientTalk's lightweight block syntax, enables you to easily build your own control structuresLike many other dynamic and functional languagesAmbientTalk embraces the use of blocks to express higher-order, functional patterns. 
 +  * The current implementation of AmbientTalk embraces the JVM as a platform. It's easy for AmbientTalk programs to use Java libraries, and it's easy for Java objects to use !AmbientTalk as an embedded scripting language. This interaction is safe: even when AmbientTalk objects are "exposed" to the JVMJVM threads [[http://soft.vub.ac.be/Publications/2007/vub-prog-tr-07-15.pdf|cannot violate]] the concurrency constraints of AmbientTalk's actor model.
  
-**Ambient-Oriented Programming**, Jessie Dedecker, Ph.DThesisVrije Universiteit Brussel. +Check out the [[at:introduction|introduction]] to AmbientTalk for a hands-on example showing you the benefits in actual codeAlternativelyglance at the [[at:byexample|key expressions]] in the language to get a 60-second overview of the language's design and intents.
-[ [[http://prog.vub.ac.be/Publications/2006/vub-prog-phd-06-01.pdf|download]] ]+
  
 +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:
  
-More information can also be found in the [[research:papers|Papers]] section.+<html> 
 +<object width="450" height="278"><param name="movie" value="https://www.youtube.com/v/4uCb218Cw64&amp;hl=nl_NL&amp;fs=1?color1=0x234900&amp;color2=0x4e9e00&amp;hd=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="https://www.youtube.com/v/4uCb218Cw64&amp;hl=nl_NL&amp;fs=1?color1=0x234900&amp;color2=0x4e9e00&amp;hd=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="450" height="278"></embed></object> 
 +</html> 
 + 
 +AmbientTalk is not our only research artifact. We have ported the ideas of Ambient-oriented Programming to Scheme, leading to the [[ischeme:ischeme]] language. There is also [[crime:introduction|CRIME]], a data-driven programming language which explores the logic programming paradigm to tackle similar coordination issues in mobile ad hoc networks. 
 + 
 +AmbientTalk's [[http://soft.vub.ac.be/Publications/2007/vub-prog-tr-07-16.pdf|mirages]] have inspired the development of [[http://wiki.ecmascript.org/doku.php?id=harmony:proxies|proxies]] in [[http://www.youtube.com/watch?v=A1R8KGKkDjU|ECMAScript harmony]]. 
 + 
 +====== Contact ====== 
 +The [[http://soft.vub.ac.be/mailman/listinfo/ambienttalk|AmbientTalk mailing list]], for questions and general information on AmbientTalk: {{:listadress.gif}}. If you want to contact any one of us personally, please see the [[people|People pages]] for personal contact details. 
 + 
 + 
 + 
 +====== Further Reading ====== 
 + 
 +If you're interested in the Ambient-oriented Programming paradigm in general, check out the [[research:papers|papers on AmOP]] page. The seminal [[http://prog.vub.ac.be/Publications/2005/vub-prog-tr-05-10.pdf|OOPSLA2005 Onward! paper]] pretty much sums up our earliest musings on AmOP.  
 + 
 + 
 +If you're interested in the AmbientTalk programming language, check out the [[research:atpapers|papers on AmbientTalk]] page. The [[http://prog.vub.ac.be/Publications/2006/vub-prog-tr-06-11.pdf|ECOOP2006 paper]] is the first paper describing AmbientTalk in-depth. However, in mid 2006 the language was extensively revised giving rise to AmbientTalk/2. While both languages have an actor-based model of concurrency and feature abstractions for service discovery, AmbientTalk/2 features event loop concurrency model and a more modular and stratified meta-level programming abstractions.  
 + 
 +Since 2007 AmbientTalk refers to AmbientTalk/2 and Dedecker's original AmbientTalk is no longer in use. A good starting point for reading about the current AmbientTalk language is the [[http://prog.vub.ac.be/Publications/2007/vub-prog-tr-07-17.pdf|SCCC2007 paper]]. 
 + 
 +AmbientTalk is actively used as a research tool: it is extended with new language features, either dedicated to further facilitate the development of software for ad hoc networks, or to explore the suitability of the language in new domains. Check out the [[ research:home |research page ]] for more information.
  
-===== Research Topics ===== 
-  * [[research:ambientrefs|Ambient References]] 
-  * [[research:exceptions|Ambient-Oriented Exception Handling]] 
-  * [[research:context|Context-Dependent Behaviour Adaptations]] 
-  * [[research:dgc|Distributed Garbage Collection]] 
-  * [[research:modelling|Modelling for Ambient Intelligence]] 
-  * [[research:biomodels|Biologically-Inspired Programming Models]] 
start.1178092829.txt.gz · Last modified: 2007/07/28 17:19 (external edit)