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!