Pular para o conteúdo

O livro · 00

Olá, Makoto

book.md · 66 linhas · 1 min de leitura

Objetivo: entender por que Makoto existe, instalar a toolchain e rodar seu primeiro programa.

Makoto junta quatro apostas que normalmente vêm separadas:

  • Resiliência da BEAM (Erlang): processos isolados, supervisão estrutural, let it crash. Um processo que falha não corrompe o resto.
  • Concorrência do Go: spawn cria processos baratos; eles conversam por channels tipados.
  • Tipos do Rust, sem lifetimes: sum types, generics, pattern matching exaustivo, sem o borrow checker e sem 'a infectando assinaturas.
  • Comptime do Zig: metaprogramação na própria linguagem, inteiros de largura arbitrária, FFI-C de primeira classe, IO sem coloring.

E três “nãos” que definem o caráter da linguagem:

  • Sem null: ausência é Optional[T], explícita no tipo.
  • Sem unit/void: uma função que não devolve valor simplesmente não tem -> T.
  • Sem function coloring: não existe async; o scheduler suspende o processo no IO, e nenhuma função precisa ser marcada.

A filosofia, em uma frase: consistente, não simples. Você só paga pelo que convoca.

A toolchain é um binário único, makoto, com o alias mk. Arquivos-fonte do core terminam em .mko.

ola.mko
use io
fn main() {
io.println("Olá, Makoto!")
}
Janela do terminal
mk run ola.mko // compila e roda
mk build ola.mko // só compila → binário

Repare em algumas coisas que já aparecem no hello world:

  • use io: não há funções no escopo global. Até println se importa (print mora em io, panic em runtime). Quem não faz IO nunca vê io.
  • main não tem -> T: ela não devolve valor. Sem void, a ausência de -> é a ausência de retorno.
  • "{{ }}" vai aparecer já no próximo programa: interpolação de string.
use io
fn main() {
nome := "mundo"
io.println("Olá, {{nome}}!") // interpolação por {{ }}, via a interface Display
}

nome := "mundo" declara um valor imutável (o caso comum não leva cerimônia). No próximo capítulo a gente destrincha declaração, os tipos primitivos, e por que não existe null.

Próximo: 01 · Valores e tipos