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

  1. 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 version

  2. Criando 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.zig
    const 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();
    }
    

  3. 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.zig
    const std = @import("std");
    
    pub fn main() !void {
        const stdout = std.io.getStdOut().writer();
        try(stdout.print("Olá, Zig!
    ")); }

  4. 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_app

  5. Adicionando 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.zig
    const 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})); }

  6. 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.zig
    const 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 }

  7. 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.zig
    const 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(); }

  8. 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.

Hashtags

#Zig #DesenvolvimentoDeSoftware #ZigLang #Programacao #Codificacao