В этой статье есть несколько проблем. Помогите улучшить ее или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти сообщения )
|
Парадигма | Объектно-ориентированный ( основанный на прототипах ), Параллельный , Управляемый событиями , Рефлексивный |
---|---|
Разработано | Том Ван Катсем, Стейн Мостинкс, Джесси Дедекер, Вольфганг Де Мойтер |
Разработчик | Лаборатория языков программирования Брюссельского университета |
Впервые появился | 2006 |
Стабильный релиз | 2.19 / Апрель 2011 |
Дисциплина набора текста | динамичный , сильный |
ОС | Независимый от платформы |
Лицензия | Лицензия Массачусетского технологического института |
Расширения имени файла | .в |
Веб-сайт | soft.vub.ac.be/amop |
Основные внедрения | |
AmbientTalk (переводчик) | |
Под влиянием | |
Smalltalk , Я , Схема , E , ABCL | |
Под влиянием | |
Гармония ECMAScript |
AmbientTalk — экспериментальный объектно-ориентированный язык распределенного программирования , разработанный в Лаборатории технологий программирования в Свободном университете Брюсселя , Бельгия. Язык в первую очередь предназначен для написания программ, развертываемых в мобильных сетях ad hoc .
AmbientTalk призван служить экспериментальной платформой для экспериментов с новыми языковыми функциями или абстракциями программирования, чтобы облегчить создание программного обеспечения, которое должно работать в крайне нестабильных сетях с прерывистым подключением и небольшой инфраструктурой. [1] Он реализован на Java , что позволяет выполнять интерпретацию на различных платформах, включая Android . Стандартная библиотека интерпретатора также обеспечивает бесшовный интерфейс между объектами Java и AmbientTalk, называемый симбиозом.
Возможности параллельности языка , включающие поддержку будущих событий и параллельность событийного цикла, основаны на модели акторов и в значительной степени были сформированы под влиянием языка программирования E. Объектно-ориентированные возможности языка нашли свое отражение в таких языках, как Smalltalk (т. е. замыкания блоков, сообщения с ключевыми словами) и Self ( программирование на основе прототипов , черты , делегирование).
system.println("Привет, мир");
Классическая программа "Hello, World!" не очень отражает особенности языка. Однако рассмотрим ее распределенную версию:
/* Определение типов, которые могут быть обнаружены в сети */ deftype Greeter ; def makeGreeter ( myName ) { /* Создать актера */ Actor : { /* Актеры имеют отдельное пространство имен, включите в него языковые фьючерсы * / import /.at.lang.futures ; /* Метод, который могут вызывать другие приветствующие */ def getName (){ myName }; /* Экспортируем этого субъекта в сеть */ export: self as: Greeter ; /* Основная логика: если мы обнаружим другого субъекта ... */ when: Greeter обнаружен: {| other | /* Асинхронно получаем его имя и приветствуем его */ when: other <- getName () @FutureMessage становится: {| name | system . println ( "Hello " + name + " from " + myName ); }; }; }; } ; /* Создаём 2 актёров, которые будут приветствовать друг друга */ makeGreeter ( "Alice" ); makeGreeter ( "Bob" );