Алиса (язык программирования) - Alice (programming language)

Алиса
Парадигма Мультипарадигма : императивная , функциональная , распределенная , параллельная
Разработано Саарский университет
Впервые появился 2000 ; 20 лет спустя ( 2000 )
Стабильный выпуск
1.4 / 3 мая 2007 г . ; 13 лет назад ( 2007-05-03 )
Печатная дисциплина сильный , статичный , предполагаемый
Операционные системы Кроссплатформенность
Лицензия Массачусетский технологический институт
Интернет сайт www .ps .uni-saarland .de / alice
Под влиянием
Мл , унция

Alice ML - это язык программирования, разработанный Лабораторией систем программирования Саарландского университета , Саарбрюккен , Германия . Это диалект из Standard ML , дополненный с поддержкой ленивой оценки , параллелизм ( Многопоточность и распределенные вычислениями с помощью вызовов удаленных процедур ) и программирование в ограничениях .

Обзор

Алиса расширяет Standard ML несколькими способами, которые отличают его от его предшественника. Алиса предоставляет функции параллелизма как часть базового языка за счет использования будущего типа, который представляет значение, предоставляемое независимым потоком выполнения. Поток, который использует будущее значение, будет блокироваться при попытке доступа к значению до тех пор, пока выполняющий его поток не завершит вычисление. Также предоставляется связанная концепция, называемая обещанием , позволяющая потоку предоставлять будущее значение, которое он будет вычислять другому потоку. Переменные типа Future и Promise используются для реализации синхронизации потока данных.

Подобно функциональному языку Haskell , Алиса предоставляет средства, позволяющие использовать стратегию ленивого оценивания в программах, в отличие от традиционной стратегии активного оценивания стандартного машинного обучения . В то время как Haskell по умолчанию использует ленивую модель, Алиса по умолчанию использует модель нетерпеливой оценки, для которой требуется явный программный оператор для ленивого вычисления вычислений.

Реализация Алисы из Саарландского университета использует виртуальную машину Simple Extensible Abstract Machine (SEAM) . Это бесплатное программное обеспечение , которое обеспечивает своевременную компиляцию в байт-код и собственный код для архитектуры x86 .

Ранние версии Алисы работали на виртуальной машине (ВМ) Mozart Programming System (Oz), что позволяло взаимодействовать между кодом Alice и 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);

Смотрите также

Ссылки

внешние ссылки