A Tese
Por que escolher Artcode?
Nós não escondemos os trade-offs. Nós entregamos o vocabulário para você gerenciá-los.
O Problema: A Lei do Cobertor Curto
Por décadas, escolher uma linguagem significou escolher qual dor você estava disposto a sofrer. Precisava de performance? Perdia segurança. Queria produtividade? Sacrificava tipagem e controle. Artcode foi projetada para quebrar essa dicotomia com um princípio: Complexidade Progressiva.
| Necessidade | Linguagem Comum | Custo Oculto |
|---|---|---|
| Máxima performance | C / C++ | Sem segurança de memória. Segfaults, UB, CVEs. |
| Segurança de memória | Rust | 6+ meses de curva antes de ser produtivo. |
| Rápida prototipagem | Python / Ruby | Sem tipos, sem null safety. Bugs em runtime. |
| Leveza e clareza | Go | Teto artificial. Expressividade limitada. |
| Apps mobile/server | Swift / Kotlin | Presos a ecossistemas corporativos. |
Artcode vs. Go
Uma questão de teto
Onde Go acerta: Simplicidade intencional. Goroutines, GC eficiente, binários pequenos, compilação rápida. Para serviços Backend, é excelente.
Onde Go falha:
1. Expressividade limitada
Go introduziu genéricos apenas em 1.18, com limitações. O sistema de tipos da Artcode é nativo e
exaustivo: enums com payloads, pattern matching que força cobertura total, e
Result<T, E> integrado.
// O compilador forca que todos os cases sejam tratados: match resposta { case .Ok(let dados): processar(dados) case .Timeout: retry_later() case .Err(let e): log_error(e) // Esquecer um case = erro de compilação }
2. GC tem pausas
Em sistemas de tempo real (jogos, trading, VoIP), as pausas do GC do Go são inaceitáveis. Artcode tem ARC determinístico por padrão e Arenas para latência zero — nenhuma pausa, nenhuma surpresa.
3. Concorrência mais expressiva
Go usa goroutines + channels — funcional, mas manual. Artcode tem o Modelo de Atores como
primitiva de primeira classe: isolamento de estado por design, sem data races fora de blocos
performant.
| Critério | Go | Artcode |
|---|---|---|
| Simplicidade inicial | ✅ Muito simples | ✅ Equivalente |
| Performance eventual | ⚠️ Limitada pelo GC | ✅ AOT + Arenas |
| Expressividade | ❌ Verboso | ✅ Pattern matching, traits |
| Concorrência | ⚠️ Channels manuais | ✅ Atores + baixo nível opt-in |
Artcode vs. Rust
O caminho livre de atrito
Onde Rust acerta: Performance de C++ com segurança de memória compile-time. O borrow checker é um feito de engenharia sem paralelo.
1. A muralha da curva de aprendizado
O borrow checker é necessário para as garantias do Rust, mas torna os primeiros meses frustrantes. A maioria demora 3-6 meses para se tornar produtivo. Para times que precisam de onboarding rápido, é risco alto.
Artcode tem a mesma intenção de segurança, mas com escada de acesso. Você não precisa entender lifetimes para escrever o primeiro sistema concorrente seguro.
2. Integração, não competição
Nossa estratégia mais inteligente: FFI zero-cost com Rust. Ambas usam LLVM.
Tipos compartilhados sem serialização. Use Rust para core libs; Artcode para lógica de
aplicação. Você ganha crates.io de graça.
3. Iteração instantânea
Rust não tem modo JIT. Cada iteração exige cargo build. Artcode oferece execução JIT
instantânea em dev (art run), o custo do AOT só vem quando você quer produção.
| Critério | Rust | Artcode |
|---|---|---|
| Segurança de memória | ✅ Compile-time | ✅ ARC + escada |
| Curva de aprendizado | ❌ Muito íngreme | ✅ Progressiva |
| Iteração em dev | ⚠️ Compilação completa | ✅ JIT instantâneo |
| Interoperabilidade | Base | ✅ FFI zero-cost |
| Produtividade inicial | ⚠️ Alta fricção | ✅ Inferência total |
Artcode vs. Python
Segurança não é opcional
Onde Python acerta: Fácil de ler, ecossistema vasto, prototipagem extremamente rápida. Para ciência de dados e automação, é a ferramenta certa.
1. O bug invisível mais caro: None
Em Python, qualquer variável pode ser None. Bugs silenciosos que explodem em
produção. Refactoring é aterrorizante porque nenhum tipo é garantido.
Em Artcode, null não existe. A ausência de valor é um tipo explícito
(Optional<T>) que o compilador obriga tratar.
func buscar(id: Int) -> Optional<User> { if id <= 0 { return .None } return .Some(db.find(id)) } match buscar(42) { case .Some(let u): exibir(u) case .None: erro("Não encontrado") // Compilador não deixa esquecer .None }
2. Performance que escala
Python é lento por design (GIL, duck typing). Precisa de extensões em C (NumPy). Artcode executa nativamente com AOT LLVM quando necessário, sem depender de FFI.
| Critério | Python | Artcode |
|---|---|---|
| Produtividade inicial | ✅ Muito alta | ✅ Equivalente |
| Null safety | ❌ None em todo lugar | ✅ Optional<T> |
| Performance | ❌ Lento | ✅ JIT + AOT LLVM |
| Segurança de tipos | ❌ Hints opcionais | ✅ Forte e verificável |
Artcode vs. JavaScript / TypeScript
Tipos reais, concorrência real
TypeScript melhorou imensamente o JS com tipos, mas eles são apagados em runtime. Você pode ter código perfeitamente tipado que explode com erros de tipo em produção.
O modelo de concorrência do JS (event loop + Promises) não previne data races em ambientes multi-worker. O Modelo de Atores da Artcode isola estado por construção.
Aplicações Node.js precisam distribuir o runtime. Artcode compila para binários nativos minúsculos — ideais para CLIs, daemons e sistemas embarcados.
Honestidade
Trade-offs da v0.1.0
Nenhum documento de marketing sério omite limitações reais.
⏳ Ecossistema de Pacotes
Ainda não temos um registry próprio. Dependemos da FFI com Rust/C para bibliotecas de terceiros.
⏳ WASM e GPU
Compilação para WebAssembly e aceleração por GPU estão previstos para v0.2+.
⏳ LSP Avançado
O servidor de linguagem fornece diagnósticos em tempo real. Autocompletar e refatoração vêm nas próximas versões.
⏳ Time-Travel Debugging
Planejado para integração no debugger. Atualmente em design de API.
O que entregamos sólido na v0.1.0
- ✅ Lexer, Parser, Interpreter e Type Checker completos e testados
- ✅ Diagnósticos estruturados com spans e sugestões
- ✅ Atores, Pattern Matching, Enums, Closures, f-Strings, ARC, weak/unowned, Arenas
- ✅ CLI unificada:
art run,art fmt,art lint,art lsp - ✅ Suíte de testes com 17+ módulos (golden, integração, unitários)
Pronto para experimentar?
Instale, escreva art run hello.art,
e descubra que a curva de aprendizado que você temia não existe aqui.