image

Unlimited bootcamps + English course forever

80
%OFF
Article image
Saulo Maciel
Saulo Maciel01/04/2026 17:01
Share
CI&T - Do Prompt ao AgenteRecommended for youCI&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.

    Share
    Recommended for you
    Globant  - Java & Spring Boot AI Developer
    Accenture - Python para AnÔlise e Automação de Dados
    Lupo - Primeiros Passos com InteligĆŖncia Artificial
    Comments (0)
    Recommended for youCI&T - Do Prompt ao Agente