← Volver al listado de tecnologías

Introducción a Zig

Por: Artiko
zigintroduccioninstalaciontesting

Introducción a Zig

¿Qué es Zig?

Zig es un lenguaje de programación de sistemas de bajo nivel diseñado para ser una alternativa moderna a C. Creado por Andrew Kelley en 2016, Zig busca ofrecer:

¿Por qué aprender Zig?

CaracterísticaCRustZig
Curva de aprendizajeMediaAltaMedia
Seguridad de memoriaManualCompiladorManual + herramientas
Interop con CNativoFFINativo
ComptimeMacrosMacros procNativo
Testing integradoNoCargoNativo

Instalación

Linux/macOS

# Descargar desde ziglang.org o usar el gestor de paquetes
# Arch Linux
sudo pacman -S zig

# macOS con Homebrew
brew install zig

# Ubuntu/Debian - descargar binario
wget https://ziglang.org/download/0.11.0/zig-linux-x86_64-0.11.0.tar.xz
tar xf zig-linux-x86_64-0.11.0.tar.xz
export PATH=$PATH:$PWD/zig-linux-x86_64-0.11.0

Windows

# Usando winget
winget install zig.zig

# O descarga el binario desde ziglang.org

Verificar instalación

zig version
# Output: 0.11.0 (o versión actual)

Tu primer programa

Crea un archivo hola.zig:

const std = @import("std");

pub fn main() void {
    std.debug.print("¡Hola, Zig!\n", .{});
}

Ejecuta:

zig run hola.zig
# Output: ¡Hola, Zig!

Anatomía del programa

Testing en Zig

Zig tiene testing integrado en el lenguaje. Crea matematicas.zig:

const std = @import("std");

pub fn sumar(a: i32, b: i32) i32 {
    return a + b;
}

pub fn restar(a: i32, b: i32) i32 {
    return a - b;
}

// Tests integrados
test "sumar dos números positivos" {
    const resultado = sumar(2, 3);
    try std.testing.expectEqual(@as(i32, 5), resultado);
}

test "sumar con números negativos" {
    try std.testing.expectEqual(@as(i32, -1), sumar(-3, 2));
}

test "restar números" {
    try std.testing.expectEqual(@as(i32, 7), restar(10, 3));
}

Ejecuta los tests:

zig test matematicas.zig
# Output:
# All 3 tests passed.

Anatomía de un test

Estructura de proyecto recomendada

mi-proyecto/
├── src/
│   ├── main.zig        # Punto de entrada
│   └── lib.zig         # Biblioteca principal
├── tests/
│   └── test_lib.zig    # Tests adicionales
└── build.zig           # Configuración de build

Compilación

# Compilar ejecutable
zig build-exe hola.zig

# Compilar con optimizaciones
zig build-exe -O ReleaseFast hola.zig

# Compilar biblioteca
zig build-lib matematicas.zig

Modos de compilación

ModoUsoCaracterísticas
DebugDesarrolloChecks de seguridad, símbolos debug
ReleaseSafeProducción seguraOptimizado, mantiene checks
ReleaseFastMáximo rendimientoSin checks de seguridad
ReleaseSmallBinarios pequeñosOptimiza tamaño

Ejercicios

  1. Hola personalizado: Modifica el programa para que imprima tu nombre
  2. Calculadora básica: Crea funciones multiplicar y dividir con sus tests
  3. Test fallido: Escribe un test que falle intencionalmente y observa el output

Resumen