Alice (мова програмування)Alice — мова функціонального програмування, розроблена в лабораторії Programming Systems Lab в Саарландському університеті. Це відгалуження мови Standard ML, доповнене лінивими обчисленнями, конкурентністю (багатонитевістю і розподіленими обчисленнями на основі виклику віддалених процедур) і програмування в обмеженнях. Реалізація Alice Саарландського університету використовує віртуальну машину SEAM (Simple Extensible Abstract Mashine). Вона відноситься до вільного програмного забезпечення і використовує компіляцію «на льоту» як в байт-код, так і в рідний код для архітектури x86. Ранні версії Alice працювали в віртуальній машині Mozart/Oz, надаючи можливість взаємодії кода на Alice і на Oz. Можливість виклику віддалених процедур в Alice залежить від віртуальної машини, тому що вона використовує безпосередню пересилку виконуваного коду з одного комп'ютера на інший. Alice доповнює Standart ML рядом примітивів для екзотичної моделі нестрогих обчислень, за допомогою яких легко реалізовується паралелізм. Потоки можуть бути створені за допомогою зарезервованого слова spawn. ПрикладРозглянемо нативний алгоритм для знаходження чисел Фібоначчі: fun fib 0 = 0
| fib 1 = 1
| fib n = fib(n-1) + fib(n-2);
Для більших значень n вираз val x = spawn(fib(n));
Тепер змінна x зв'язана з так званим майбутнім значенням. Коли будь-якій операції буде потрібне значення x, вона буде заблокована доти, доки потік не закінчить роботу. Для кращого використання паралелізму можна буде визначити fun fib 0 = 0
| fib 1 = 1
| fib n = spawn fib(n-1) + fib(n-2);
Див. такожПосилання
|