Perguntas frequentes
As dúvidas mais comuns sobre a linguagem, seu escopo e suas escolhas.
É uma linguagem de verdade?#
Sim. DataForge tem lexer, parser recursivo descendente, AST tipada, analisador estático e interpretador de árvore próprios — cerca de 19 mil linhas de Python. Não é um wrapper sobre eval: cada construção tem seu nó de AST e sua regra de avaliação.
A prova prática: um dos exercícios é um interpretador de expressões escrito em DataForge, com lexer, parser e avaliador. A linguagem é expressiva o bastante para implementar outra.
Por que não usar Python direto?#
Se o objetivo é produtividade imediata em produção, use Python. DataForge existe por outras razões:
- Vocabulário que descreve intenção —
given/monitor/blueprintem vez deif/try/class - Pipelines como sintaxe, não biblioteca
- Erros que ensinam — cada mensagem sugere a correção
- Análise estática opcional que não exige anotar tudo
- Ser um objeto de estudo completo de como se constrói uma linguagem
Por que `:=` em vez de `=`?#
Elimina a confusão clássica entre atribuição e comparação. Em DataForge, = sozinho não existe — então given x = 5 é erro de sintaxe, não um bug silencioso.
Por que `yes`/`no` em vez de `true`/`false`?#
Consistência com o vocabulário. A linguagem inteira usa palavras curtas e diretas; yes/no cabe nessa família melhor que true/false.
Por que `//` é comentário e não divisão?#
// abre comentário em praticamente toda linguagem da família C. Fazer dele divisão inteira, como Python, quebraria a expectativa de quem vem de C, Java, JavaScript, Go ou Rust.
A regra é conservadora: comentário por padrão, divisão só quando o que vem depois não pode ser prosa. Para não pensar nisso, existe ~/.
Preciso anotar os tipos?#
Não. Anotar é opcional e você escolhe onde. A recomendação prática: anote a fronteira — parâmetros e retorno de ações públicas, campos de record — e deixe o interior livre.
Dá para usar em produção?#
Depende do que "produção" significa no seu caso. O que existe e é testado: 272 testes, 190 exercícios, 42 exemplos, análise estática, servidor HTTP e SQLite funcionando.
O que não existe: gerenciador de pacotes, LSP, debugger, VM otimizada e generics. Para um utilitário interno ou um script de dados, é viável. Para um sistema crítico com equipe grande, ainda não.
Como o desempenho se compara?#
É um interpretador de árvore sem otimização, então mais lento que Python — que já é lento comparado a linguagens compiladas. Uma VM de bytecode está no roadmap, mas ninguém reclamou de desempenho ainda.
Veja Desempenho para números e o que fazer a respeito.
Posso contribuir?#
Sim — veja Contribuir. Os itens mais acessíveis do roadmap: verificação de exaustividade em match, contrato de trait no analisador, funções novas nos módulos Arcane.* e mais exercícios.
Qual a licença?#
MIT.