Aprendendo a linguagem C3
| LICENSE | ||
| README.org | ||
Aprendendo a linguagem C3
1 – Visão Geral
Documentação
Importante! A documentação pode estar defasada em relação ao estado de desenvolvimento atual da linguagem.
Sobre linguagem C3
Pretende ser uma evolução da linguagem C e uma linguagem minimalista para desenvolvimento de sistemas.
Ergonomia e segurança
- Implementa opcionais para lidar com erros e null de forma rápida e segura.
- Utiliza defer para limpeza de recursos.
- Implementa slices e foreach para iterações seguras.
- Permite descrever contratos em comentários para inserir restrições no código.
- Libera memória automaticamente após o uso em contextos de
@pool.
Performance por padrão
- Utiliza vetores SIMD para programar o hardware diretamente.
- Acessa alocadores de memória diferentes apara ajuste fino de performance.
- Sem erros de overhead.
- Baixos tempos de compilação.
- Backend LLVM para otimizações robustas de nível industrial.
- Uso de Assembly inline simplificado.
Biblioteca padrão
- Contêineres dinâmicos e strings.
- Abstrações multiplataforma para facilidade de uso.
- Acesso à plataforma nativa quando necessário.
Compatível com bibliotecas C e C++
- Compatibilidade completa com a ABI da linguagem C.
- Códigos em C3 podem ser ligados a códigos em C e vice-versa.
Modularização simplificada
- Módulos organizam o código em namespaces.
- Módulos simplificam o encapsulamento com controle explícito.
- Interfaces definem comportamentos compartilhados para a escrita de bibliotecas robustas.
- Módulos genéricos facilitam a extensão do código.
- Composição simples de structs e reutilização por meio de subtipagem.
Macros descomplicadas
- Similaridade com a escrita de funções.
- Macros "compreendem" os tipos no código.
Objetivos do projeto
A linguagem C3 deve ser…
- Procedural com abordagem pragmática com foco na conclusão do trabalho.
- Minimalista, ou seja, nenhum recurso deve ser desnecessário ou redundante.
- Próxima à linguagem C, mudando apenas no que for significativo e necessário.
- Fácil de aprender para quem já programa em C.
- Perfeitamente integrada à linguagem C.
- Ergonômica nos padrões mais comuns.
O projeto ainda é guiado por outros princípios, como:
- Dados são inertes.
- Zero é inicialização (ZII).
- Evitar ideias mirabolantes.