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.