Алиса (язык программирования)
Эта статья нуждается в дополнительных цитатах для проверки . ( февраль 2011 г. ) |
Парадигмы | Мультипарадигма : императивный , функциональный , распределенный , параллельный , ограниченный. |
---|---|
Семья | ML : Стандартный ML |
Разработчик | Саарский университет |
Впервые появился | 16 июня 2000 г |
Стабильная версия | 1,4
/ 3 мая 2007 г |
Дисциплина набора текста | сильный , статичный , предполагаемый |
ТЫ | Кросс-платформенный |
Лицензия | С |
Веб-сайт | www |
Под влиянием | |
МЛ , Оз |
Alice ML — это назначения разработанный высокого уровня , многопарадигмальный общего функциональный язык программирования Лабораторией систем программирования Саарландского университета , Саарбрюккен , Германия . [2] Это диалект стандартного машинного обучения , дополненный поддержкой отложенных вычислений , параллелизма ( многопоточность и распределенные вычисления посредством удаленных вызовов процедур ) и программирования с ограничениями .
Обзор
[ редактировать ]Alice расширяет Standard ML несколькими способами, которые отличают его от предшественника. Алиса предоставляет функции параллелизма как часть базового языка за счет использования будущего типа, который представляет значение, предоставляемое независимым потоком выполнения. Поток, использующий будущее значение, будет блокировать попытку доступа к этому значению до тех пор, пока поток, выполняющий его, не завершит вычисление. Также предусмотрена связанная концепция, называемая обещанием , позволяющая потоку предоставлять будущее значение, которое он вычислит другому потоку. Переменные типа Future и Promise используются для реализации синхронизации потоков данных.
Как и функциональный язык Haskell , Alice предоставляет средства, позволяющие использовать в программах стратегию ленивой оценки , в отличие от традиционной стратегии нетерпеливой оценки Standard ML. В то время как Haskell по умолчанию использует ленивую модель, Алиса по умолчанию использует нетерпеливую модель оценки, и для ленивого вычисления требуется явный программный оператор.
Реализация Алисы из Саарского университета использует виртуальную машину Simple Extensible Abstract Machine (SEAM) . Это бесплатное программное обеспечение , обеспечивающее своевременную компиляцию в байт-код и собственный код для архитектуры x86 .
Ранние версии Алисы работали на виртуальной машине (VM) Mozart Programming System (Oz), что позволяло взаимодействовать между Алисой и кодом Oz .
Удаленный вызов процедур Алисы зависит от виртуальной машины, поскольку она может отправлять код для вычисления с одного компьютера на другой.
Пример
[ редактировать ]Алиса расширяет Standard ML несколькими примитивами для отложенных вычислений и параллелизма. Например, потоки могут быть созданы с помощью spawn
ключевое слово . Рассмотрим простой алгоритм вычисления чисел Фибоначчи :
fun fib 0 = 0
| fib 1 = 1
| fib n = fib(n-1) + fib(n-2);
Для больших значений n
, fib n
считать придется долго. Это вычисление может быть выполнено в отдельном потоке с помощью
val x = spawn fib n;
Переменная x
теперь привязан к так называемому будущему . Когда для операции требуется значение x
, он блокируется до тех пор, пока поток не завершит вычисления. Чтобы использовать параллелизм, можно даже определить fib следующим образом:
fun fib 0 = 0
| fib 1 = 1
| fib n = spawn fib(n-1) + fib(n-2);
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ «Алиса» . DE: Саарский университет .
- ^ «Лаборатория систем программирования» . Архивировано из оригинала 5 октября 2006 года . Проверено 8 августа 2006 г.