Alice (linguagem de programação)
Origem: Wikipédia, a enciclopédia livre.
Alice é uma linguagem de programação funcional, concebida pelo Laboratório de Programação de Sistemas da Universidade de Saarland. Trata-se de um dialeto do Standard ML, complementado com suporte a avaliação atrasada, concorrência (multithreading e computação distribuída através de chamadas de procedimento remoto) e programação com restrições. A implementação da linguagem Alice da Universidade de Saarland usa a máquina virtual SEAM (Simple Extensible Abstract Machine). Trata-se de um software livre que tem entre suas características compilação just in time e código nativo para a arquitetura x86.
As versões iniciais de Alice eram executadas na máquina virtual Mozart/Oz, permitindo interação entre o código em Alice e o código em Oz. Chamadas a procedimentos remotos em Alice dependem da máquina virtual, porque ela pode, de fato, enviar código a ser computado a partir de um computador para outro.
[editar] Exemplo
Alice descende de Standard ML utilizando-se de várias primitivas para avaliação atrasada e concorrência. Por exemplo, threads podem ser criados usando a palavra-chave spawn. Considere um algoritmo simples para calcular o números de Fibonacci:
fun fib 0 = 0 | fib 1 = 1 | fib N = fib (n. - 1) + fib (n. - 2);
Para grandes valores de n, fib(n) terá uma execução extremamente lenta. Esse cálculo pode ser executado em uma thread dessa forma:
Val x = spawnfib n.;
A variável x agora está vinculada a um dos procedimentos futuros. Quando uma operação exige que o valor real de x seja calculado, fica bloqueada até que a a thread seja processada. Para explorar paralelismo pode-se ainda definir fib como segue:
fun fib 0 = 0 | fib 1 = 1