Interested Article - Alice (язык программирования)
- 2021-05-28
- 1
Alice — язык функционального программирования , разработанный в лаборатории в Саарском университете . Это диалект языка Standard ML , дополненный ленивыми вычислениями , конкурентностью ( многопоточностью и распределёнными вычислениями на основе вызова удалённых процедур ) и программированием в ограничениях .
Реализация Alice Саарского университета использует виртуальную машину (Simple Extensible Abstract Mashine). Она является свободным программным обеспечением и использует компиляцию «на лету» как в байт-код , так и в родной код для архитектуры x86 .
Ранние версии Alice работали в виртуальной машине Mozart / Oz , предоставляя возможность взаимодействия кода на 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);
См. также
Примечания
Ссылки
- 2021-05-28
- 1