Pitch: Taiyo: Meu experimento que virou algo muito maior
Olá a todos do tabnews! Deixe me dar uma breve aprensentação, me chamo Felicia, ou conhecida como Cloudy ou Nimbus. Recentemente eu fiz um projeto de código aberto com objetivo de aprendizado, comecei a ter interesse em saber como linguagens de programação e compiladores / interpretadores funcionavam por baixo dos panos. Foi assim que surgiu o projeto Taiyo.
Taiyo é uma linguagem de script interpretada em runtime e desenhada para ser interoperavel diretamente com Haxe, sim ela foi feita 100% em haxe, sem dependencia externa, sem nada. Estou escrevendo esse post pois alem desse projeto maluco que eu resolvi fazer, eu queria contar tambem uma situação na qual estou passando com ela, que talvez para quem desenvolve linguagens pode ser uma ajuda.
A prova de fogo
Eu gosto muito de comunidades de programação, então eu estou em uma comunidade dessa que faz desafios semanais, o desafio da semana foi um Banco simples, nada muito rebuscado, somente as operações CRUD padrões, verificações de saldo e autenticação e gerenciamento de contas. Mas ao invez de eu usar uma linguagem ja funcional e existente, eu resolvi usar minha linguagem experimental.
Sinceramente mesmo eu tendo tido muitos problemas e dores de cabeça com ela, não por causa da sintaxe mas por causa da minha implementação mesmo, essa foi uma das melhores decisões que eu tive, pois para melhorar ela para oque de fato eu tenho em mente para usar ela, eu teria que fazer um teste extensivo. Então nada melhor do que testar enquanto faz um "desafio" certo?
Usando ela para fazer o desafio do banco me fez perceber vários vetores e casos que eu não sabia que era possivel ou que não tinha implementado ainda. Alem tambem dos pacotes, o que me fez pensar ainda mais em como arquitetar o Runtime para ser volatil com uso do Haxe. Agora sei que vocês tão pensando: "ok legal mas como é a linguagem?". Vou demonstrar trechos e as funcionalidades dela.
Hello world
use taiyo.std.io
func main() do
io.println("Ola tabnews")
end
Até o momento não parece muito diferente, ela tem uma semelhança com lua e go (sim em inspirei diretamente neles), mas o diferencial vem agora
func main() uses taiyo.std.io do
println("Ola tabnews")
end
Taiyo permite a importação de pacotes direto no escopo de funções, ou seja ao invez de você importar o pacote std direto para o escopo global do script, você pode importar ele somente na função que vai utilizar ela, isso remove tambem a necessidade de usar prefixos, como nesse caso. Porem se você importar ele dentro da função com uses você não pode usar as funções do pacote fora dela.
Alem disso o foco dela e ser interoperavel com Haxe, então você tem funcções da API para criar runtimes, configurar modulos, inicialização etc. Alem claro funções para manuseio de valores entre runtime e o Haxe
O projeto é 100% open source e quando estiver num estado mais estavel, eu posso parar para a proxima fase do meu projeto, e provavelmente eu farei outro post explicando mais sobre esse novo projeto para vocês.