MacBalsa

O software de animação de algoritmos MacBalsa foi desenvolvido por Marc H. Brown, em 1988, como parte de sua tese na Brown University.  Ele foi desenvolvido para a plataforma Macintosh e implementado em Pascal e é capaz de executar animações de algoritmos muito sofisticadas. O artigo Exploring Algorithms using Balsa II, IEEE Computer, Maio 1988, 14-36 contém uma boa descrição do software MacBalsa.

Um programa que está sendo animado pelo MacBalsa é dividido em diversas porções, sendo uma porção o algoritmo propriamente dito e múltiplas views do algoritmo em ação. Em tempo de execução, o MacBalsa permite ao usuário selecionar quais views serão utilizadas. O algoritmo é executado sem saber quais views foram selecionadas e cada view é executada sem saber qual algoritmo que a está controlando, desta forma, os algoritmos não se envolvem em nenhum aspecto gráfico e as views não se envolvem em detalhes algorítmicos. Esse modelo também facilita o compartilhamento de views entre diversos algoritmos.
A figura abaixo mostra a animaçào do algoritmo MergeSort, em quatro views distintas, no ambiente MacBalsa

Figura 1 : Animaçào do algoritmo MergeSort no ambiente MacBalsa

Associados a cada algoritmo e view existem parâmetros que o usuário pode manipular. Por exemplo, os parâmetros para uma compressão de texto podem ser o nome do arquivo a ser compactado e o nome da base de dados das freqüências da palavra. Os parâmetros para um a utilização típica utilizada por esse algoritmo podem incluir quais as cores e padrões utilizados para representar graficamente o texto original e comprimido.

No software MacBalsa, algoritmos e views se comunicam através de interesting events, os quais são chamadas ao event-dispatcher do Macbalsa localizado no código-fonte do algoritmo. Os interesting events identificam operações fundamentais do algoritmo. Por exemplo, muitos algoritmos de ordenação são baseados nos interesting events "Comparar" e "Permutar", indicando quando um algoritmo examina um elemento do vetor que está sendo ordenado e quando um algoritmo permuta dois elementos do vetor, respectivamente. Quando o event-dispatcher do MacBalsa é chamado pelo algoritmo, ele chama cada view do algoritmo, passando o nome do evento e todos os argumentos do algoritmo especificado. Cada view se atualiza para refletir a operação do algoritmo. Os interesting events são conceitos importantes tanto para programadores que preparam animações, quanto para os usuários, pois é por eles que a execução do algoritmo é controlada.

O ambiente MacBalsa possui três facilidades básicas: ele pode ser um gerenciador, um interpretador e um assistente. Como gerenciador, ele permite selecionar e manipular os algoritmos e as views, como interpretador, ele pode controlar e analisar a execução do algoritmo baseado nos interesting events (por exemplo, ele pode executar o algoritmo passo a passo, incluir brakpoints e especificar a quantidade de tempo que cada evento irá consumir), sendo que, associado a cada evento, existem três quantidades : um flag de passo ( "este evento está no conjunto de eventos que consttuem o próximo passo do algoritmo ?"), uma quantidade de paradas ("quantos desse evento devem ocorrer antes que uma parada ocorra ?") e um custo(quanto tempo deve cada ocorrência desse evento tomar para a execução do algoritmo ?").. Como assistente, ele pode salvar e restaurar o ambiente, por exemplo.

A figura abaixo mostra a animaçào do algoritmo Selection Sort no ambiente MacBalsa, após selecionarmos a opção "Speed", a qual permite estipular o tempo tomado por cada  ocorência de um evento do algoritmo.

Figura 2 : Seleionamos quatro views para a execução do algoritmo de Selection Sort e, ainda, estipulamos o tempo tomado por cada ocorrência do evento do algoritmo.

O software MacBalsa é utilizado no estilo de interação "setup and run", ou seja, o usuário cria uma cena, ou utilizando as facilidades de gerenciador ou restaurando-a de um arquivo e depois executa a cena. Enquanto o algoritmo está sendo executado, o usuário pode suspender a execução, modificar aspectos da cena e retomar a execução ou abortar o restante da execução.

O software MacBalsa possui três modos: setup, running e suspended. Durante o modo de setup, todos os aspectos da cena podem ser "setados". Durante o modo de execução, o usuário somente assiste a execução. Durante o modo suspenso somente os aspectos de apresentação e os aspectos temporais da cena podem ser alterados. Os aspectos de apresentação são: tamanho, localização e parãmetros associados com as janelas de view. Os aspectos temporais são: os valores de passo, parada e custo associados com cada interesting event. Os aspectos da cena não podem ser alterados enquanto o sistema está em modo suspended. Os aspectos estruturais são: qual algoritmo está localizado em cada janela de algoritmo e os parâmetros especificados para cada um deles."

Para maiores informações sobre o sistema MacBalsa  (e para se obter um download do sistema ),  pode-se consultar na Web o endereço: http://www.eg.bucknell.edu/~zacone/MacBALSA.html