Pular para o conteúdo

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çãogiven/monitor/blueprint em vez de if/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.