Alice (язык программирования)

Материал из Википедии — свободной энциклопедии
Alice
Изображение логотипа
Семантика функциональный
Класс языка язык параллельного программирования
язык функционального программирования и язык программирования
Тип исполнения компиляция в байткод для виртуальной машины
Появился в
2002
Автор Programming Systems Lab, Saarland University
Система типов
Хиндли—Милнера
Основные реализации Alice (единственная)
Испытал влияние Standard ML, Oz
Лицензия лицензия MIT
Сайт ps.uni-saarland.de/alice/

Alice —

вызова удалённых процедур) и программированием в ограничениях
.

Реализация Alice Саарского университета использует

.

Ранние версии Alice работали в виртуальной машине

, предоставляя возможность взаимодействия кода на Alice и на Oz.

Возможность вызова удалённых процедур в Alice зависит от виртуальной машины, потому что она использует непосредственную пересылку исполняемого кода с одного компьютера на другой.

Alice расширяет 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);

См. также

Ссылки