š Criando minha própria linguagem de programação: evolução real da Kaa (Alpha 2.1)
Recentemente, compartilhei aqui na DIO o inĆcio de um projeto pessoal: a criação da minha própria linguagem de programação, a Kaa.
Naquele momento, era mais uma ideia em execução ā um experimento para entender melhor como linguagens funcionam por baixo dos panos.
Hoje, a história é outra.
A Kaa evoluiu.
De curiosidade para arquitetura
Criar uma linguagem de programação não é só escrever sintaxe bonita.
Na prÔtica, você estÔ lidando com um conjunto de decisões fundamentais:
- Como o código serÔ interpretado?
- Como os dados serão representados?
- Como o fluxo de execução serÔ controlado?
- E principalmente: qual problema essa linguagem resolve?
Esse processo envolve conceitos clĆ”ssicos da computação, como anĆ”lise lĆ©xica, parsing e execução ā etapas essenciais na construção de compiladores e interpretadores.Foi exatamente nesse ponto que a Kaa deixou de ser um experimento e comeƧou a se tornar um sistema.
Estrutura interna da Kaa
Na versão Alpha 2.1, o projeto jÔ estÔ organizado como uma linguagem de verdade:
- Scanner (anĆ”lise lĆ©xica) ā transforma código em tokens
- Parser (anĆ”lise sintĆ”tica) ā organiza os tokens em estrutura lógica
- AST (Ćrvore SintĆ”tica Abstrata) ā representa o programa
- Interpretador ā executa o código
- Ambiente (escopos) ā controla variĆ”veis e contexto
- FunƧƵes e closures ā permitem reutilização e encapsulamento
Esse fluxo ā do texto atĆ© a execução ā Ć© exatamente o pipeline clĆ”ssico de linguagens modernas.
O que jĆ” Ć© possĆvel fazer com Kaa
A Kaa jĆ” permite escrever programas completos.
Alguns exemplos de recursos atuais:
Tipagem leve e explĆcita
var -i x = 10;
var -f y = 3.14;
var -s nome = "Kaa";
var -i a;
var -f b;
var -T controle1; // Bool: true jĆ” incluso
var -F controle2; // Bool: false
Tuplas, dicionƔrios e listas
var -l a; // lista
var -d b; // dicionario
var -t c; // tupla
a = [1,2,3,4] // depois de declaradas, podem ser abastecidas chamando
b = {1:a,2:b,3:c}
c = (1,2,3)
Estruturas de controle
if (x > 5) {
print "Maior que 5";
}
while (cond) {
// execução contĆnua
}
Funções e reutilização
fun soma(a, b) {
return a + b;
}
Um diferencial interessante: módulos e closures
Um dos pontos mais interessantes da Kaa é o sistema de importação e exportação:
add "./bot.kaa" -> obter;
add "./boot.kaa" all;
expor fun1, fun2; // exporta apenas funƧƵes e as selecionadas
expor all; // exporta somente todas as funcoes
Aqui, funções são exportadas e podem carregar seu próprio estado através de closures.
Isso significa que variĆ”veis nĆ£o sĆ£o exportadas diretamente ā elas viajam encapsuladas dentro das funƧƵes.
Esse modelo forƧa um design mais limpo e previsĆvel.
Biblioteca padrão jÔ funcional
A linguagem jÔ conta com bibliotecas próprias, sem depender diretamente do Python:
math.kaa
- MDC, MMC, fatorial
- Fibonacci, logaritmos
- FunƧƵes trigonomƩtricas
- OperaƧƵes com listas
time.kaa
- Contagem (
conte) - Pausa (
pare)
Isso mostra que a linguagem jĆ” consegue sustentar funcionalidades reais ā nĆ£o Ć© apenas um interpretador mĆnimo.
Integração com Python (estratégica)
Mesmo com bibliotecas próprias, a Kaa também permite integração com Python:
add -py "import math as m";
Essa decisĆ£o nĆ£o Ć© só tĆ©cnica ā Ć© estratĆ©gica.
Ela permite:
- Expandir rapidamente o ecossistema
- Validar a linguagem com casos reais
- Evitar reinventar tudo no inĆcio
Filosofia da linguagem
Toda linguagem precisa de um ānorteā.
No caso da Kaa, algumas decisões jÔ estão claras:
- Sintaxe simples, mas explĆcita
- Tipagem leve, porƩm controlada
- Separação clara entre atribuição (
=) e comparação (==) - Modularização com foco em funções
- Erros explĆcitos e didĆ”ticos
Isso segue um princĆpio comum no design de linguagens: definir objetivos claros antes de expandir funcionalidades.
O que mudou da versão anterior?
A maior evolução não foi só em features.
Foi em maturidade.
Antes:
- Um interpretador funcional
Agora:
- Uma linguagem estruturada
- Com arquitetura definida
- Com sistema de módulos
- Com biblioteca padrão
- E com caminho claro de evolução
Próximos passos
A Kaa ainda estÔ em Alpha, mas com base sólida.
Os próximos focos são:
- Melhorar o interpretador
- Refinar mensagens de erro
- Expandir a biblioteca padrão
- Evoluir o sistema de parsing
- Criar mais casos reais de uso
Conclusão
Criar uma linguagem de programação muda completamente a forma como você enxerga código.
VocĆŖ deixa de ser apenas usuĆ”rio de abstraƧƵes ā e passa a entender como elas sĆ£o construĆdas.
E no fim, essa Ʃ a maior entrega do projeto atƩ agora:
Não só uma linguagem⦠Mas uma nova forma de pensar software.




