Introdução
Neste tutorial, iremos explorar a linguagem de programação Zig, que tem ganhado destaque por sua sintaxe simples, segurança de memória e performance. O Zig é ideal para desenvolvimento de sistemas, pois permite que os desenvolvedores escrevam código eficiente e mantenham a integridade do mesmo. Durante este guia, abordaremos a configuração do ambiente, a estrutura do projeto usando o Zig Build System e utilizaremos a biblioteca padrão Zig (Zig std) para implementar funcionalidades práticas. O objetivo é proporcionar uma compreensão clara de como começar a desenvolver aplicações em Zig, além de exemplos práticos que poderão ser utilizados como base para projetos futuros. A este guia é especialmente útil para desenvolvedores que estão interessados em linguagens de baixo nível, mas que ainda buscam segurança e eficiência no desenvolvimento.
Etapas
Configuração do Ambiente de Desenvolvimento
Para começar, você precisará instalar o Zig em sua máquina. Acesse o site oficial do Zig e baixe a versão mais recente. Após o download, siga as instruções de instalação apropriadas para o seu sistema operacional. Você pode verificar a instalação com o comando `zig version` no terminal.
commands# Verificar a instalação do Zig
zig versionCriando um Novo Projeto Zig
Inicie um novo projeto Zig criando um diretório para a aplicação e, dentro dele, um arquivo chamado ‘build.zig’. Este arquivo será responsável por definir as configurações de compilação do seu projeto.
build.zigconst std = @import("std"); const build = std.build; pub fn build(b: *build.Builder) void { const mode = b.run_mode(); const exe = b.addExecutable("my_app", "src/main.zig"); exe.setBuildMode(mode); exe.install(); }
Implementando o Código Principal
Crie um diretório chamado ‘src’ e, dentro dele, um arquivo ‘main.zig’. Este será o ponto de entrada do seu programa. Vamos implementar um simples programa que imprime uma mensagem na tela.
main.zigconst std = @import("std"); pub fn main() !void { const stdout = std.io.getStdOut().writer(); try(stdout.print("Olá, Zig!
")); }Construindo e Executando o Projeto
Com o código implementado, você pode agora compilar e executar sua aplicação. Utilize o comando abaixo na raiz do seu projeto para compilar. Em seguida, execute o arquivo gerado para ver a saída do seu programa.
commands# Compilar o projeto
zig build
# Executar a aplicação
./zig-out/bin/my_appAdicionando Mais Funcionalidades
Vamos expandir nosso programa para solicitar ao usuário seu nome e, em seguida, imprimir uma mensagem personalizada. Para isso, iremos usar as funções de entrada e saída da biblioteca padrão do Zig.
main.zigconst std = @import("std"); pub fn main() !void { const stdout = std.io.getStdOut().writer(); const stdin = std.io.getStdIn(); try(stdout.print("Qual é o seu nome? ")); var name: [128]u8 = undefined; const input = try stdin.readUntilDelimiterOrEof(&name, '
'); const trimmed_name = input[0..input.len - 1]; try(stdout.print("Olá, {s}!
", .{trimmed_name})); }Tratamento de Erros
Zig possui um sistema de tratamento de erros que permite que você trate falhas de maneira clara e eficiente. Vamos modificar nossa função `main` para lidar com erros ao ler a entrada do usuário.
main.zigconst std = @import("std"); pub fn main() !void { const stdout = std.io.getStdOut().writer(); const stdin = std.io.getStdIn(); const input = try stdin.readUntilDelimiterOrEof(&name, '
'); if (input.isEmpty()) { return error.InvalidInput; } // Código continua aqui }Executando Testes Simples
Para assegurar a integridade do código, vamos implementar um teste simples. Crie um arquivo ‘test.zig’ dentro do diretório ‘src’ para escrever um teste básico para a função que gera a mensagem.
test.zigconst std = @import("std"); fn testGreeting() !void { const expected = "Olá, Zig!
"; // Aqui você deve chamar a função que gera a mensagem e verificar se a saída está correta. } test("Greeting Test") { testGreeting(); }Compilando e Executando os Testes
Você pode compilar e executar os testes usando um comando específico do Zig. Execute o comando abaixo para rodar todos os testes definidos em seu projeto.
commands# Compilar e testar o projeto
zig build test
Conclusão
Neste guia prático, você aprendeu os conceitos básicos de desenvolvimento com a linguagem Zig, explorando seu sistema de build e a biblioteca padrão. Começamos configurando o ambiente de desenvolvimento, progredimos com a criação de um projeto básico e implementamos funcionalidades adicionais, além de incorporar tratamento de erros e testes. O Zig é uma linguagem promissora que combina eficiência e segurança, tornando-a uma excelente opção para desenvolvimentos de sistemas. Com o conhecimento adquirido aqui, você está pronto para explorar ainda mais suas capacidades e desenvolver aplicações robustas e eficientes.