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

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);

См. также

Примечания

Ссылки


Источник —

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