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