A ciência da computação por trás do ToonTalk
O ToonTalk é um interpréte
para uma linguagem e programação restrita concorrente. Uma programação restrita concorrente é uma síntese de uma programação lógica concorrente e de uma programação lógica restrita (vide, por exemplo, Saraswat). A classe de linguagens para as
quais os programas são intercambiáveis, grosso
modo, com os programas do ToonTalk, incluem Janus, Flat Guarded
Horn Clauses, KL1, Flat Concurrent Prolog, Parlog e Strand. A sintaxe de todas essas linguagens é textual, enquanto o ToonTalk tem uma sintaxe orientada para a ação, com animação de video-game. O ambiente de programação é também completamente diferente. No ToonTalk, o processo de construção, teste e correção de programas se assemelha bastante a jogar um videogame.
Pictorial Janus é uma versão
visual do Janus na qual as imagens são utilizadas como
código-fonte e a execução de um programa pode ser vista como uma animação. O ToonTalk difere do Pictorial Janus (e de todas as linguagens de programação visuais), pois seu código fonte é animado e concreto, em oposição às sintaxes estáticas e abstratas das linguagens de programação visuais. (Vide site ftp Pictorial Janus e a página da web da Paderborn University.)
O modelo computacional subjacente ao
ToonTalk suporta a criação dinâmica e o fim de processos não-sincronizados. Capacidades de envio e recebimento de primeira classe fornecem um meio para que esses processos se comuniquem e sincronizem. Todo o estado é pertencente ao processo. Há uma estreita relação entre linguagens de programação concorrentes orientadas para objetos (incluindo linguagens de ator) e ToonTalk. (Vide artigos do ToonTalk.) Aqui há um ensaio sobre como o ToonTalk é concorrente e por que é difícil estender linguagens convencionais para que sejam concorrentes.
O ToonTalk inclui um jogo de
desafio que traz uma seqüência de mais de 60 enigmas. As conexões entre a programação de computadores e a ciência da computação para cada desafio são descritas aqui.
Uma forma de compreender o ToonTalk é
que ele proporciona "concretizações" de abstrações computacionais. Para cada abstração computacional o ToonTalk fornece um equivalente análogo tangível.
Abstração Computacional |
Concretização no Toon Talk |
computação |
cidade |
ator ou processo ou
objeto |
casa |
métodos |
robos |
pré-condições de
método |
conteúdo da
mente do robô |
ações
de métodos |
ações
ensinadas aos robôs |
"tuples"
ou mensagens ou vetores |
caixas |
testes de
comparação |
escalas
(réguas) |
geração de ator |
caminhões
carregados |
término de
ator |
bombas |
constantes |
números,
textos e imagens |
capacidade de
transmitir canais |
pombos |
capacidade de
receber canais |
ninhos |
armazenagem de
programas |
agendas |
Outra maneira de compreender o modelo computacional do ToonTalk é considerar o que você treina os robôs para fazer:
· Enviar uma mensagem (isto é, dizer um impedimento)
. dando uma caixa ou bloco a um
pombo,
· Gerar um novo agente
colocando uma caixa ou uma equipe de
robôs em um caminhão,
· Desempenhar operações primitivas simples (por exemplo +, -, *)
colocando um bloco em outro,
· Copiar um item
utilizando a Varinha Mágica,
· Terminar um agente
pela explosão de uma bomba,
· Alterar os conteúdos de um tuple
tirando itens e colocando novos.
•
•
•
•
•
•
•
•
•
|