Executando verificação de segurança...
20

Pitch: Yet Another Automata Simulator (YAAS)

Versão 0.8.0
Boa tarde! A quem puder interessar, segue release da nova versão do YAAS, mais um simulador de autômatos. Aproveito de antemão para me desculpar por possíveis duplicatas. Essa mensagem está sendo transmitida em diversos meios.

Depois de duas semanas trabalhando mais de 6 horas por dia nos meus horários vagos, acabo de lançar a versão 0.8.0 do YAAS. A principal novidade desta versão é a implementação do editor para construção de Autômatos de Pilha (Pushdown Automata) e a possibilidade de executar simulações de pertinência de strings em linguagens livres de contexto representadas pelo autômato construído. Além dessa funcionalide principal, há diversas outras novidades menores, principalmente relacionadas à qualidade de vida do usuário. A partir da versão 1.0.0 do simulador será assegurada a compatibilidade de arquivos binários gerados por ele. Por enquanto, a serialização dos modelos é atrelada à versão do simulador. Esta ferramenta tem se mostrado bastante útil na condução da disciplina de Linguagens Formais e Autômatos do curso de Bacharelado em Ciência da Computação do IFSP, câmpus São João da Boa Vista, a qual dou aula atualmente, além de também estar servindo como alternativa ao JFLAP para que os alunos consigam testar seus modelos. Quem já fez essa disciplina sabe o qual espinhoso o assunto pode ser.

A versão 0.8.0 do YAAS pode ser obtida aqui: https://github.com/davidbuzatto/YAAS/releases/tag/v0.8.0, havendo opção de download como instalador para Windows, bastante prático por sinal, ou para execução direta, o que demanda a instalação da JRE 18 ou do JDK 18 ou superior.

O próximo ciclo de desenvolvimento dará conta da implementação das Máquinas de Turing (versões 0.9.x) e, a partir dai, haverá a primeira feature freeze do projeto, para que bugs sejam resolvidos quando necessário e para o lançamento da versão 1.0.x. O processo de implementação está sendo transmitido diariamente no meu canal do YouTube (https://www.youtube.com/channel/UCtuPFOgX47mBfNoG4gXgjfA).

Obrigado!

Conteúdo anterior:
Boa tarde!

Meu nome é David Buzatto, sou professor do Instituto Federal de São Paulo (IFSP) e atualmente trabalho com várias disciplinas do curso de Bacharelado em Ciência da Computação. Dentre essas disciplinas, uma delas é a de Linguagens Formais e Autômatos, também conhecida como Teoria da Computação, entre outros nomes.

Essa é uma das disciplinas que me fascinam e, desde 2008, na época do meu mestrado, eu venho desenvolvendo pequenos simuladores para assuntos relacionados à temática das linguagens formais, além de propor algumas atividades de implementação nesse domínio na disciplina que leciono.

De fato, existem exemplos de simuladores deste tipo, sendo talvez o mais famoso deles o JFLAP (https://www.jflap.org/) que, apesar de cobrir muitos assuntos, é um pouco difícil de usar, pois não é tão intuitivo. Com isso em mente, decidi colocar minha experiência na construção desses protótipos para criar uma ferramenta mais completa e de código aberto, me auxiliando na condução da minha disciplina e permitindo que meus alunos realizem alguns testes, além de provavelmente usá-la na proposição de atividades de implementação aos alunos, onde eles poderão estender a ferramenta.

Sendo assim, apresento-lhes o YAAS, mais um simulador de autômatos! O endereço do projeto é https://github.com/davidbuzatto/YAAS. Muito do código ainda precisa ser refatorado e preparado para a continuação da implementação, mas essa versão já traz ao usuário praticamente todas as funcionalidades que envolvem a construção, simulação e a aplicação de algoritmos em Autômatos Finitos como geração de Autômatos Finitos Determinísticos a partir de Autômatos Finitos Não-Determinísticos, minimização de Autômatos Finitos Determinísticos, especificação total de funções de transição, complementação de DFAs, salvar o modelo como imagem etc. Essa versão pode ser baixada em https://github.com/davidbuzatto/YAAS/releases/tag/v0.7.3, onde são disponilizados um instalador para Windows e um arquivo .jar para quem não quiser instalar ou rodar no Linux, por exemplo.

Espero que seja interessante aos colegas! Quaisquer críticas, sugestões (e elogios, claro) são bem-vindos!

2

Muito bom!

Complementando: pra quem não sabe, Autômatos são a base teórica para muitas coisas, entre elas a construção de um compilador. Faz parte daquela "teoria chata e inútil" que os cursos caça-níquel costumam ignorar.

Ok, talvez a maioria não vá usar diretamente e nem sequer implementar um, mas não é conhecimento inútil. Saber como funcionam as entranhas te dá um entendimento maior da computação como um todo, te tornando um profissional melhor. Esse ganho é indireto e difícil de perceber no curto prazo, talvez por isso seja tão negligenciado, mais até do que a "base clássica" (algoritmos, matemática, lógica e estruturas de dados).

3

Obrigado Hugo! Realmente, as disciplinas mais abstratas sempre ficam jogadas de lado e são ensinadas daquele jeitão em vários cursos. Eu tento sempre amarrar com a realidade e mostrar onde é aplicado para que o aluno, que normalmente quase não tem motivação alguma, entenda a importância daquilo.

1

Parabéns pela iniciativa e por trazer o assunto à tona, que é pouco explorado e importante para o estudo formal de computação. Espero que a comunidade utilize. Eu gosto muito do Wolfram Mathematica,o framework dele pra estudar autômatos é incrível, embora seja software pago muitas universidades custeiam para os alunos. Recomendo dar uma olhada se puder.

2

Olá! Primeiramente, obrigado. Eu não sabia que no Mathematica havia esse tipo de funcionalidade. Na verdade, eu usei o Mathemática muito pouce há muitos (muitos mesmo) anos. Infelizmente a realidade de onde eu trabalho não permite normalmente ter esse tipo de software, a não ser que seja muito necessário e justificável no curso. Sempre preferimos lidar com softwares gratuitos. Dei uma pesquisada parece que há bastante coisa sobre autômatos celulares. De teoria de linguagens mesmo eu achei isso aqui https://resources.wolframcloud.com/PacletRepository/resources/KlausSutner/Automata/. Muitas das operações descritas ali eu pretendo implementar. A ideia é servir de ferramenta para a minha disciplina mesmo, pq no final das contas esses projetos acabam servindo mais aos autores do que outras pessoas.