Aprendendo a linguagem C3
Find a file
2026-04-15 03:00:22 -03:00
LICENSE Initial commit 2026-04-15 01:03:02 -03:00
README.org Mais uma alteração nos tópicos 2026-04-15 03:00:22 -03:00

Aprendendo a linguagem C3

1 Visão Geral

Documentação

Documentação oficial

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.

2 Instalação do compilador

Binário pré-compilado

Construção a partir dos fontes

3 Salve, simpatia!

Estrutura básica do programa

Compilação

Compilação e execução

Projetos

Criando um novo projeto

Estrutura de diretórios

Construção do projeto

4 Desafios

Implementar um echo simplificado

Implementar um cat simplificado

Jogo da adivinhação