Seguindo a filosofia de aprender em público, que mencionei na seção about do blog, este post dá início a uma série sobre a linguagem de programação Zig.

De início, não pretendo fazer posts longos ou tutoriais completos. Registrarei pequenos passos (com um ritmo consistente, espero) no aprendizado dessa nova linguagem para mim. Aqui e ali, farei paralelos com outras que já me são familiares, como C e Rust.

Características da linguagem

Segundo sua própria documentação, Zig é, ao mesmo tempo:

  • uma linguagem de programação de propósito geral;
  • uma toolchain para a manutenção de software robusto, otimizado e reutilizável

Ela é fortemente tipada e compilada. Tem suporte a generics, meta-programação em tempo de compilação (falaremos mais sobre isso em posts futuros) e não possui garbage collector.

A linguagem promete um código-fonte de fácil leitura, que se comunica de forma precisa com o compilador e com os programadores. O mesmo código funciona em vários ambientes com diferentes restrições e se comporta corretamente, mesmo em situações extremas, como falta de memória.

A biblioteca padrão

A biblioteca padrão de Zig tem uma documentação própria. Ela inclui algoritmos, estruturas de dados e definições para ajudar na criação de programas ou outras bibliotecas.

Um primeiro exemplo

O exemplo abaixo foi retirado do ótimo site Learning Zig. Os detalhes de cada linha são explicados no post original e não irei me estender sobre eles por enquanto. O objetivo é mostrar a “cara” da linguagem.

 1const std = @import("std");
 2
 3pub fn main() void {
 4	const user = User{
 5		.power = 9001,
 6		.name = "Goku",
 7	};
 8
 9	std.debug.print("{s}'s power is {d}\n", .{user.name, user.power});
10}
11
12pub const User = struct {
13	power: u64,
14	name: []const u8,
15};

Se salvar o código acima em um arquivo de nome ssj.zig e executar zig run ssj.zig, você irá obter o seguinte resultado na linha de comando: Goku's power is 9001.

Fontes de recursos para estudo

Comecei a estudar pelos dois últimos e estou gostando bastante. Ziglings são exercícios que permitem aprender a linguagem resolvendo pequenos problemas em programas. Parece ser bastante inspirado no Rustlings (de Rust, como você poderia imaginar) e é um recurso muito bem estruturado.

É isso! Fizemos uma breve apresentação de Zig.