image

Bootcamps ilimitados + curso de inglês para sempre

80
%OFF
Article image
Saulo Maciel
Saulo Maciel01/04/2026 17:01
Compartilhe
CI&T - Do Prompt ao AgenteRecomendados para vocêCI&T - Do Prompt ao Agente

🚀 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.

    image

    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.

    Compartilhe
    Recomendados para você
    Globant  - Java & Spring Boot AI Developer
    Accenture - Python para Análise e Automação de Dados
    Lupo - Primeiros Passos com Inteligência Artificial
    Comentários (0)
    Recomendados para vocêCI&T - Do Prompt ao Agente