Apidog

Plataforma de desarrollo de API colaborativa todo en uno

Diseño de API

Documentación de API

Depuración de API

Simulación de API

Prueba automatizada de API

Tutorial de Zig para principiantes: Cómo instalar y usar Zig

Este artículo muestra lo básico del lenguaje Zig, cómo instalarlo, etc.

Daniel Costa

Daniel Costa

Updated on April 15, 2025

Zig es un lenguaje de programación moderno de propósito general diseñado para ser robusto, óptimo y mantenible. Con un enfoque en la simplicidad y la claridad, Zig proporciona control de bajo nivel al tiempo que evita el flujo de control y las asignaciones ocultas. Este tutorial te guiará a través del proceso de instalación, la creación de tu primer programa Zig y la ejecución de pruebas. Al final, tendrás una base sólida para explorar este poderoso lenguaje más a fondo.

Mientras exploramos potentes herramientas para desarrolladores, vale la pena mencionar Apidog, la alternativa definitiva a Postman para el desarrollo y las pruebas de API. Apidog combina la documentación, el diseño, la simulación, las pruebas y la depuración de API en una única plataforma optimizada.

button

Con su interfaz intuitiva, sus funciones de colaboración y su perfecta integración del control de versiones, Apidog mejora drásticamente la eficiencia del flujo de trabajo para los desarrolladores que trabajan con API. Su completo conjunto de funciones incluye pruebas automatizadas, gestión del entorno, encadenamiento de solicitudes y validación inteligente de respuestas, lo que la convierte en una herramienta esencial para los equipos de desarrollo modernos.

button

Antes de sumergirte en la programación de Zig, considera agregar Apidog a tu conjunto de herramientas de desarrollador para mejorar tu productividad general cuando trabajes con API y servicios web.

Parte 1: Instalación de Zig

Antes de que puedas comenzar a programar en Zig, debes instalar el compilador y las herramientas. El proceso de instalación varía según tu sistema operativo.

Instalación en Linux

Tienes dos opciones principales para instalar Zig en Linux:

Opción 1: Usar el administrador de paquetes de tu distribución

La mayoría de las principales distribuciones de Linux empaquetan la última versión de Zig. Este es a menudo el enfoque más fácil:

# For Debian/Ubuntu
sudo apt install zig

# For Fedora
sudo dnf install zig

# For Arch Linux
sudo pacman -S zig

Opción 2: Instalación manual

Si tu distribución no tiene Zig o necesitas una versión específica:

Descarga una versión precompilada de Zig del sitio web oficial que coincida con la arquitectura de tu CPU

Para verificar tu arquitectura, usa:

uname -m

Extrae el archivo usando tar:

tar xf zig-linux-x86_64-0.13.0.tar.xz

Agrega el binario de Zig a tu PATH:

echo 'export PATH="$HOME/zig-linux-x86_64-0.13.0:$PATH"' >> ~/.bashrc

Aplica los cambios:

source ~/.bashrc

Instalación en Windows

Los usuarios de Windows tienen varias opciones:

Opción 1: Usar administradores de paquetes

# Using Chocolatey
choco install zig

# Using Winget
winget install zig.zig

# Using Scoop
scoop install zig

Opción 2: Instalación manual

Descarga una versión precompilada de Zig para Windows que coincida con la arquitectura de tu CPU (la mayoría de los sistemas Windows usan x86_64/AMD64)

Verifica tu arquitectura con:

$Env:PROCESSOR_ARCHITECTURE

Extrae el archivo ZIP

Agrega Zig a tu PATH:

Para el usuario actual:

[Environment]::SetEnvironmentVariable(
    "Path",
    [Environment]::GetEnvironmentVariable("Path", "User") + ";C:\\\\path\\\\to\\\\zig-windows-x86_64",
    "User"
)

Para todo el sistema:

[Environment]::SetEnvironmentVariable(
    "Path",
    [Environment]::GetEnvironmentVariable("Path", "Machine") + ";C:\\\\path\\\\to\\\\zig-windows-x86_64",
    "Machine"
)

Cierra y vuelve a abrir tu terminal

Instalación en macOS

La forma más sencilla de instalar Zig en macOS es usar Homebrew:

brew install zig

Verificación de tu instalación

Después de la instalación, verifica que Zig esté instalado correctamente ejecutando:

zig version

Deberías ver una salida como:

0.13.0

Parte 2: ¡Hola, Mundo! en Zig

Ahora que Zig está instalado, creemos tu primer programa Zig: el tradicional ejemplo "¡Hola, Mundo!".

Creación del archivo del programa

  1. Crea un nuevo archivo llamado main.zig
  2. Ábrelo en tu editor de texto preferido
  3. Agrega el siguiente código:
const std = @import("std");

pub fn main() void {
    std.debug.print("Hello, {s}!\\\\n", .{"World"});
}

Analicemos lo que hace este código:

  • const std = @import("std"); importa la biblioteca estándar de Zig
  • pub fn main() void { declara la función principal que actúa como punto de entrada de tu programa
  • std.debug.print("Hello, {s}!\\\\n", .{"World"}); imprime "¡Hola, Mundo!" en el flujo de error estándar (stderr)
  • {s} es un especificador de formato para cadenas, y .{"World"} es cómo Zig pasa argumentos a los especificadores de formato

Ejecución del programa

Para construir y ejecutar tu programa, usa el siguiente comando:

zig run main.zig

Esto compila tu código y lo ejecuta inmediatamente. Deberías ver la salida:

Hello, World!

Nota importante sobre la codificación de archivos

Zig requiere codificación UTF-8 para los archivos fuente. Si encuentras un error como invalid bytes, es posible que tu archivo tenga una codificación diferente. Para solucionar esto:

zig fmt main.zig

Esto volverá a codificar tu archivo como UTF-8. Luego, vuelve a abrir el archivo en tu editor.

Parte 3: Ejecución de pruebas en Zig

Zig tiene un marco de pruebas integrado que facilita la escritura y ejecución de pruebas. Comprender cómo usar las pruebas es crucial a medida que aprendes Zig, especialmente porque muchos ejemplos en la documentación de Zig se proporcionan como pruebas.

Creación de una prueba simple que pasa

Creemos un archivo de prueba básico:

  1. Crea un nuevo archivo llamado test_pass.zig
  2. Agrega el siguiente código:
const std = @import("std");
const expect = std.testing.expect;

test "always succeeds" {
    try expect(true);
}

Este código importa el módulo de prueba, luego define una prueba llamada "always succeeds" que espera que true sea verdadero (lo cual siempre lo es).

Para ejecutar esta prueba:

zig test test_pass.zig

Deberías ver una salida similar a:

All 1 tests passed.

Creación de una prueba que falla

Ahora, creemos una prueba que falle para comprender cómo Zig maneja los fallos de prueba:

  1. Crea un archivo llamado test_fail.zig
  2. Agrega el siguiente código:
const std = @import("std");
const expect = std.testing.expect;

test "always fails" {
    try expect(false);
}

Esta prueba espera que false sea verdadero, lo cual obviamente falla.

Cuando ejecutas:

zig test test_fail.zig

Verás una salida de error como:

Test [1/1] test.always fails... FAIL (TestUnexpectedResult)
/usr/lib/zig/std/testing.zig:515:14: 0x2241ef in expect (test)
if (!ok) return error.TestUnexpectedResult;
^
[...]/test_fail:5:5: 0x224305 in test.always fails (test)
try expect(false);
^
0 passed; 0 skipped; 1 failed.

Comprensión del manejo de errores en las pruebas

La palabra clave try es crucial en las pruebas de Zig. Intenta ejecutar una función que puede devolver un error. Si se devuelve un error, propaga ese error a la persona que llama.

Intenta ejecutar la misma prueba sin la palabra clave try:

test "will not compile correctly" {
    expect(false);
}

Obtendrás un error del compilador porque no estás manejando el error potencial que expect() podría devolver.

Parte 4: Conceptos básicos de Zig para principiantes

Variables y constantes

En Zig, defines variables y constantes de la siguiente manera:

const std = @import("std");

pub fn main() void {
    // Constant (cannot be changed)
    const fixed_value = 42;

    // Variable (can be changed)
    var changeable_value = 10;
    changeable_value = 20; // This is allowed

    // You can specify types explicitly
    const explicit_integer: i32 = 1234;
    var explicit_float: f64 = 3.14159;

    std.debug.print("Fixed: {d}, Changeable: {d}\\\\n",
        .{fixed_value, changeable_value});
}

Tipos de datos básicos

Zig tiene varios tipos de datos integrados:

const std = @import("std");

pub fn main() void {
    // Integers
    const i: i32 = -42;       // Signed 32-bit integer
    const u: u32 = 42;        // Unsigned 32-bit integer

    // Floats
    const f: f32 = 3.14;      // 32-bit float
    const d: f64 = 2.71828;   // 64-bit float

    // Boolean
    const b: bool = true;

    // Characters and strings
    const c: u8 = 'A';                    // Character (as integer)
    const s: []const u8 = "Hello, Zig!";  // String (a slice of u8)

    // Arrays with fixed size known at compile time
    const arr = [5]u8{1, 2, 3, 4, 5};

    std.debug.print("Integer: {d}, Float: {d}\\\\n", .{i, f});
    std.debug.print("String: {s}\\\\n", .{s});
}

Funciones

Las funciones en Zig se definen usando la palabra clave fn:

const std = @import("std");

// Basic function with parameters and return value
fn add(a: i32, b: i32) i32 {
    return a + b;
}

// Function that may return an error
fn divide(a: f32, b: f32) !f32 {
    if (b == 0) {
        return error.DivisionByZero;
    }
    return a / b;
}

pub fn main() void {
    // Call a simple function
    const sum = add(5, 3);
    std.debug.print("5 + 3 = {d}\\\\n", .{sum});

    // Call a function that may return an error
    if (divide(10, 2)) |result| {
        std.debug.print("10 / 2 = {d}\\\\n", .{result});
    } else |err| {
        std.debug.print("Error: {}\\\\n", .{err});
    }

    // Another way to handle errors
    const division_result = divide(10, 0) catch |err| {
        std.debug.print("Division failed: {}\\\\n", .{err});
        0; // Default value in case of error
    };
    std.debug.print("Result (or default): {d}\\\\n", .{division_result});
}

Conclusión

Este tutorial ha cubierto los aspectos esenciales para comenzar con Zig: la instalación en diferentes sistemas operativos, la creación y ejecución de tu primer programa y el trabajo con el marco de pruebas de Zig. También hemos presentado algunos conceptos fundamentales como variables, tipos de datos y funciones.

Zig es un lenguaje poderoso que ofrece control de bajo nivel al tiempo que enfatiza la seguridad, la claridad y la mantenibilidad. Su enfoque para el manejo de errores y la gestión de la memoria lo convierte en una alternativa interesante a lenguajes como C, C++ y Rust.

Para continuar tu viaje con Zig, considera:

  • Explorar la documentación oficial de Zig
  • Unirte a la comunidad de Zig en Discord o al foro Ziggit
  • Instalar el servidor de lenguaje Zig para una mejor integración del IDE
  • Intentar construir pequeños proyectos para obtener experiencia práctica

Recuerda que Zig todavía está evolucionando, por lo que algunas características pueden cambiar a medida que el lenguaje madura hacia la versión 1.0. ¡Feliz codificación!

Cómo usar Lovable AI (Alternativa a Cursor para desarrolladores web)Tutoriales

Cómo usar Lovable AI (Alternativa a Cursor para desarrolladores web)

Aprende a crear cualquier web con Lovable en esta guía completa. Descubre procesos paso a paso, funciones innovadoras e integra herramientas gratuitas como Apidog para gestión API.

Daniel Costa

April 15, 2025

Cómo usar n8n con servidores MCPTutoriales

Cómo usar n8n con servidores MCP

Automatiza flujos con n8n y servidores MCP para IA. Guía técnica: configuración, APIs, nodo "MCP Server Trigger" y Apidog para pruebas.

Daniel Costa

April 14, 2025

Cómo añadir claves API personalizadas a Cursor: Una guía completaTutoriales

Cómo añadir claves API personalizadas a Cursor: Una guía completa

Este tutorial te guiará para configurar y gestionar claves API personalizadas en Cursor (OpenAI, Anthropic, Google y Azure).

Daniel Costa

April 11, 2025