Apresentando o Editor para o Ambiente de Programação Visual para a Máquina Geométrica Diego G. Prestes∗, Renata H. S. Reiser 1 Núcleo de Apoio a Projetos de Informática - NAPI Escola de Informática UCPEL Rua Félix da Cunha, 412 - 96010-000 - Pelotas - RS {dprestes,reiser}@ucpel.tche.br Abstract. This paper describes the partial results of the development of the editor for the Visual Programming Environment of the Geometric Machine Model, including the algebraic process constructors. This environment is constructed based on the specification of the visual programming language for the Geometric Machine Model. The traditional techniques of textual programming language are combined with the construction of grafic/visual environments in order to improve the programming in the Geometric Machine and make easy the use of parallel techniques. It is presented elementary processes, parallel and sequential products, deterministic and non-deterministic sums. Resumo. Este artigo descreve os resultados parciais no desenvolvimento do editor para o Ambiente de Programação Visual do Modelo de Máquina Geométrica, incluindo os construtores algébricos de processos. Este ambiente é construı́do com base na especificação da linguagem visual para o modelo de Máquina Geométrica. As técnicas tradicionais da programação textual foram combinadas com as construções visuais para incentivar a programação na Máquina Geométrica e tornar mais fácil o uso de técnicas de programação paralela. São apresentados os processos elementares e os contrutores de processos: produtos sequencial e paralelo, somas determinı́stica e não-determinı́stica. 1. Introdução Este artigo introduz a etapa de implementação do editor para o Ambiente de Programação para o Modelo de Máquina Geométrica (APV-MG). O modelo de Máquina Geométrica (MG) é uma máquina abstrata, com estados e processos possivelmente infinitos e rotulados por posições de um espaço geométrico, com tempo de acesso constante. Este modelo foi desenvolvido com o objetivo de prover representação para algoritmos da Computação Cientı́fica, com ênfase na concorrência sı́ncrona e no conflito de acesso à memória. O modelo consiste numa generalização do modelo de automatos celulares, no sentido em que permite que as transições de estados possam ser executadas pela aplicação de um conjunto enumerável de funções locais, identificadas pela posição de memória alterada e denominadas processos elementares. Resumidamente, dentre as caracterı́sticas relevantes do modelo MG, destacam-se: 1. distribuição espacial da memória e dos processos; 2. modelagem de computações envolvendo sequencialização e paralelismo sı́ncrono; 3. interpretação da soma determinı́stica, incluindo testes computacionais; ∗ Bolsa PIBIC/CNPq Figure 1: Tela do Editor 4. não-determinismo caracterizado pelo conflito no acesso a memória; 5. interpretação de construtores recursivos, baseada na modelagem indutiva dos processos e dos construtores de processos. Baseada na abordagem proposta no projeto GENGED [Bardohl and Ermel, 2001], a especificação da Linguagem Visual para a Máquina Geométrica (LVMG) [Reiser et al., 2003e] inclui a especificação do alfabeto visual e da gramática visual para a linguagem LVMG com ênfase nas construções recursivas. Para tal, são consideradas dois tipos de sintaxe [Erwig, 1998]: a sintaxe abstrata (SA), responsável pela estruturação lógica das expressões gráfica (diagramas) da linguagem visual e a sintaxe concreta (SC), orientando a definição do seu layout para manipulação do usuário. Os resultados alcançados [Reiser et al., 2003a] fundamentam a construção do editor de processos e dos construtores de processos para o ambiente APV-MG. O uso das técnicas tradicionais da programação textual foram combinadas com as construções visuais [Chang et al., 1986], visando incentivar a programação na Máquina Geométrica e tornar mais fácil o uso de técnicas de programação paralela. O ambiente, além de permitir a programação com expressões visuais, também provê a especificação semântica de um processo de forma bi-dimensional. 2. Editor para o Ambiente APV-MG Para o desenvolvimento do editor está sendo utilizado a linguagem Python, junto com sua biblioteca gráfica wxPython, em especial o módulo OGL para a criação dos processos. Através da Figura 1 é possı́vel visualizar a construção da tela do editor. Podemos identificar 5 áreas que formam a interface do editor que são: • Barra de Menus: através das funções wxMenu() e wxMenuBar() é possı́vel construir as barras de menus visualizadas; • Barra de Ferramentas: construı́da através da função wxPanel() e possibilita a chamada de algumas funções do programa como salvar e abrir algum processo criado e também tem acesso aos dados especı́ficos de cada processo, podendo serem alterados caso necessário; • Barra dos Botões: também construı́da através da função wxPanel() e que disponibiliza os botões para a construção dos processos do Modelo MG; • Barra de Status: utilizando a função CreateStatusBar() para dar dicas ao usuário; • Área de Trabalho: funciona em conjunto com duas funções, primeiramente foi criado uma área para utilização de barras de rolagem wxScrolledWindow() e dentro desta área foi então inserido a área onde serão construı́dos os objetos do módulo OGL, através da função wxShapeCanvas(). Figure 2: Processo Sequencial Nas próximas seções mostra-se como são construidos os processos e os construtores de processos no editor do ambiente APV-MG. 3. Processo Elementar Primeiramente foi estudado e desenvolvido o processo elementar através da função wxDrawnShape(). Com a utilização desta função tem-se a possibilidade de criar objetos de qualquer formato, apenas indicando as coordenadas para criação de linhas. Pode-se também, inserir objetos já definidos na biblioteca como quadrados e cı́rculos, incluindo a formatação de objetos mais complexos. Para a criação do processo elementar também foram utilizados textos, com a função DrawText(), indicando as informações pertinentes ao processo, como seu valor e a posição afetada. Há também dados do processo que não são visı́veis aos usuário, mas que servem para fazer determinados controles dentro do editor. A partir da Figura 1, verifica-se o resultado da construção de um processo elementar. Também é possı́vel identificar os dois dados visı́veis do processo, representando a operação indicada pela letra ”d” rotulada pela posição de memória ”0”. 4. Processo Sequencial Para a construção do produto sequencial e dos demais construtores compostos por mais de um objeto, foi preciso criar um novo tipo de objeto, que integrasse todos os atributos e propriedades de todos os objetos do novo processo em um só objeto. O objeto envelope é um objeto em formato de retângulo transparente, utilizado para o agrupamento dos objetos. A partir da definição deste objeto foi possı́vel identificar o tamanho e a posição que os objetos agrupados ocupam, para posteriormente determinar o tamanho do objeto envelope resultante. Logo após, uma lista, criada a partir de uma função desenvolvida, é capaz de armazenar a informação de quais são os objetos que pertencem a esse novo objeto envelope, incluindo também o tipo de dado associado. Além disso, é possı́vel armazenar a informação sobre quais as posições de memória afetados pelos objetos desse envelope e, em seguida, esses dados sao disponibilizados junto com objeto envelope, para uso futuro. No final da construção do novo processo, o objeto envelope estará acessı́vel no editor, fazendo com que os outros objetos que o compõem possam ser acessados através dele. Também se faz necessário o uso de uma função de movimentação do objeto en- Figure 3: Produto Paralelo[a] Soma Não-Determinı́stica[b] velope, possibilitando o movimento do agrupamento e, por consequência, de todos os objetos que o compõe. A definiçao de um processo sequencial obedece uma ordem de execução prédefinida, visualmente disponı́vel para o usuário no sentido da esquerda para a direita. Na Figura 2, pode-se visualizar um exemplo de produto sequencial aplicado a processos elementares. Nesse caso, primeiro ele executa a operação ”d” sobre a posição de memória ”0” e logo após, executa a mesma operação sobre a posição ”1”. 5. Produto Paralelo e Soma Não-Determinı́stica O Produto Paralelo e a Soma Não-Determinı́stica por serem bastante semelhantes na sua representação, foram desenvolvidos simultaneamente, respeitando algumas modificações referentes a definição de cada um deles. Eles trabalham com a mesma idéia do produto sequencial, utilizando o objeto Envelope para agrupá-los, porém possuem mais atributos para serem, adequadamente, representados. Esses processos se diferenciam primeiramente pelo forma como são computados os dados: o produto paralelo modelando a concorrência sı́ncrona e, a soma não determinı́stica, utilizando o conflito de acesso aos dados. Para tal, o modelo MG define uma função posição, capaz de controlar as posições de memória afetadas após sua execução. Na implementação do ambiente esta informação também está disponı́vel, regulando a permissao para execução destas operações. Para isso é feito uma verificação de conflito dos valores de memória afetados pelos objetos que irão compor cada um desses processos. Caso haja um conflito de memória só poderá ser executada uma escolha nãodeterminı́stica. Caso contrário, quando não ocorre um conflito, o produto paralelo pode ser aplicado. Baseadas nestas restrições, quando não for permitida a execução de uma destas operações, o programa retornará uma mensagem de erro ao usuário, indicando que não é possı́vel construir o processo a partir do construtor escolhido. Não havendo nenhum problema, a criação do novo processo é obtida de forma satisfatória. Foram agregados novos objetos geométricos para cada tipo de processo, relacionados com a notação introduzida no modelo MG, que são as barras laterais. Elas se diferem e dependem do tipo do processo, viabilizando a distinção visual na representação destes processos, conforme mostra a Figura 3. Figure 4: Soma Determinı́stica 6. Soma Determinı́stica Utiliza-se também um objeto envelope para modelagem, no editor do ambiente APV-MG, do construtor soma determinı́stica, incluindo a modelagem dos testes computacionais[Reiser, 2002]: o existencial, o universal e a versão determinı́stica, onde ambos coincidem. O objeto gráfico representando um teste computacional é definido da mesma forma que o processo elementar, utilizando as mesmas funções do módulo gráfico. Dentro da função de criação do processo soma determinı́stica primeiramente é necessário verificar se estão selecionados objetos escolhidos pelo usuário, validando-se desta forma sua construção. Caso haja alguma construção mal definida, a função de criação é abortada e uma mensagem de alerta é exibida para o usuário. Caso constrário, faz-se o agrupamento dos objetos selecionados, para então ser efetivada a criação do objeto envelope, agregando informação sobre posição e tamanho. Na Figura 4, é possı́vel visualizar o resultado da criação da soma determinı́stica aplicada a processos elementares, utilizando os dois objetos criados, o objeto do teste computacional e o objeto de término do processo. 7. Conclusão Este trabalho mostra que o ambiente APV-MG em desenvolvimento pode incentivar a prática da programação, utilizando técnicas de sincronização, modelagem da memória (compartilhada) e do conflito de acesso. Alguns dos importantes benefı́cios do uso das representações visuais/espaciais em modelo computacionais que envolvam programação paralela e distribuı́da são: o número de argumentos (aridade) envolvidos na definição dos processos algébricos, as (possı́veis) definições recursivas dos construtores, a composição funcional, as computações paralelas e não-determinı́sticas relacionadas com a sincronização de processos, e finalmente, a distribuição espacial dos processos e estados computacionais. Entende-se que estas caracterı́sticas da programação visual que estão sendo aplicadas na construção do ambiente APV-MG, sejam relevantes para tornar a programação no modelo MG mais acessı́vel aos usuários em geral, possibilitando sua aplicação na Computação Cientı́fica, em especial no desenvolvimento de algoritmos da Matemática Intervalar, da Álgebra Linear e de Processos Estocásticos. Na fase de modelagem do ambiente visual, tem-se como primeira meta a definição da linguagem visual, incluindo as especificações do alfabeto e da gramática e contem- plando análise da sintaxe abstrata e concreta. Este trabalho apresenta os resultados parciais obtidos com a introdução e a implementação do editor do alfabeto e da gramática, incluindo a criação da interface do ambiente APV-MG. Foi estudada e aplicada a biblioteca gráfica wxPython, possibilitando manipulação de diagramas, definição e construção de funções de acesso ao ambiente, criação e redimensionamento de objetos, interação e uso de agentes, podem ser facilmente desenvolvidas nesta linguagem (livre e multiplataforma) e disponibilizados no ambiente. Na implementação do editor gráfico para o alfabeto e para a gramática foram utilizadas estratégias da programação visual e as bibliotecas disponı́veis para a linguagem Python. Na construção do ambiente aplicam-se diferentes classes: (1) MyApp (aplica a função wxApp para a inicialização do programa) (2) MyFrame (usa as funções wxFrame, wxPanel)(3) MyShape (geração e inserção de objetos gráficos)(4) MyEvent (manipulação de eventos)(5) Classes dos Desenhos (contém as definições para desenho dos processos). A modelagem do alfabeto viabilizou a definição e a construção do editor de processos e a implementação das regras para o editor da gramática, envolvendo todos os construtores, como produto paralelo e sequencial, soma determinı́stica e não-determinı́stica. Por fim, salienta-se que este ambiente de programação em desenvolvimento deverá suportar aplicações voltadas ao desenvolvimento de algoritmos da Computação Cientı́fica, considerando-se a diversidade de modelagens que resultam em novas versões do modelo MG, incluindo principalmente as aplicações na Matemática Intervalar [Reiser et al., 2003d, Reiser et al., 2003b, Reiser et al., 2003c]. References Bardohl, R. and Ermel, C. (2001). Visual specification and parsing of a statechart variant using genged. In Proc. Symposium on Visual Languages and Formal Methods, pages 5–7. Chang, S.-K., Ichikawa, T., and Ligomenides, P. A. (1986). Visual Languages. Plenum Press, New York. Erwig, M. (1998). Abstrac sintax and semantics of visual languages. 9. to appear. Reiser, R. (2002). A máquina geométrica - um modelo computacional para concorrência e não-determinismo usando como estrutura os Espaços Coerentes. PhD thesis, CPGCC/UFRGS - Porto Alegre. Reiser, R., Cardoso, M., Costa, A., and Dimuro, G. (2003a). Utilizando a programação visual no modelo de máquina geométrica. In CLEI2003-XXIX Conferência Latinoamericana de Informática, pages 1–10. Universidad Major San Andrés. Reiser, R., Costa, A., and Dimuro, G. (2003b). The interval geometric machine. In Numerical Algorithms, volume 34, pages 1–10. Kluwer, Dordrecht. Reiser, R., Costa, A., and Dimuro, G. (2003c). O modelo de máquina geométrica intervalar. In TEMA, pages 109–118. Reiser, R., Costa, A., and Dimuro, G. (2003d). A programming language for the interval geometric machine model. In Eletronic Notes in Theoretical Computer Science, volume 84, pages 1–12. Reiser, R., Costa, A., Dimuro, G., and Cardoso, M. (2003e). Specifying the geometric machine visual language. In IEEE Symposium on Visual Languages and Formal Methods, pages 1–3.