Zig by Example

Estado de “Zig by Example”

  • Apunta a Zig 0.14; quienes comentan señalan cambios importantes desde entonces (impresión/formateo “writergate”, sistema de compilación, interoperabilidad con C).
  • Varios dicen que los ejemplos no compilan en Zig actual; consideran que está al menos ~2 años desactualizado y que es “muy breve” / demasiado simplista.
  • Varias personas afirman que parece generado por IA y, por tanto, no es fiable para aprender.

Recursos alternativos para aprender Zig

  • Recomendados con frecuencia:
    • Learning Zig (libro en línea), zig.guide.
    • “Introduction to Zig” (libro en línea basado en proyectos).
    • Ziglings (ejercicios interactivos; mantenido al día con la última versión; listado en el sitio oficial de Zig).
    • Página oficial “Why Zig over Rust/D/C++”.
    • Documentación TigerStyle del proyecto Tigerbeetle como referencia de estilo/mejores prácticas.
    • zigdoc y ziglint, además de zig fmt, para herramientas.

Versionado, estabilidad y herramientas

  • Punto doloroso: muchos proyectos de Zig necesitan una versión específica del compilador; es común que no coincida con la instalación local o entre proyectos.
  • Algunos lo llaman un “gran fallo”; otros dicen: está en pre-1.0, la inestabilidad es esperable y aceptada por los primeros usuarios.
  • Comparaciones con las ediciones de Rust, que permiten mezclar versiones; Zig carece de un equivalente.
  • Mitigaciones sugeridas: usar gestores de versiones/entornos aislados (mise, Nix, Docker, etc.).

Si aprender Zig (vs. Rust/C/C++)

  • Opiniones a favor de Zig:
    • Más simple, más cercano a C (con algunos aspectos tipo Go), más fácil entender lo que hace la máquina.
    • Buena opción para desarrolladores de alto nivel que ocasionalmente bajan a bajo nivel por rendimiento, gracias a su sintaxis simple y a una herramienta/cross-compiling potentes.
    • Aunque siga siendo de nicho, el conocimiento se traslada a la comprensión general de sistemas.
  • Opiniones escépticas:
    • Rust ya cubre la mayor parte del espacio de “sistemas modernos”, con seguridad de memoria y un fuerte impulso industrial.
    • Zig no es seguro, es inestable y quizá siga siendo de nicho o siga la trayectoria de D; C sigue siendo el lenguaje dominante de sistemas.
    • Para aprender sistemas en profundidad, se prefiere C (y quizá Rust); Zig puede parecer redundante si ya conoces bien C.
    • Algunos cuestionan tratar los lenguajes como “inversiones” a largo plazo; otros responden que la fluidez y mantenerse al día con los cambios son costes reales.

Diseño del lenguaje, sintaxis y concurrencia

  • A algunos no les gusta .{}
    • Se percibe como ruidoso cuando se usa para argumentos y patrones predeterminados/opcionales/variádicos.
    • Quejas por tener que descartar explícitamente valores de retorno no usados.
  • Quienes lo defienden explican:
    • .{} es construcción inferida de struct/tupla, a menudo menos verbosa que nombrar tipos.
    • El descarte explícito es intencional para detectar errores.
  • Modelo de concurrencia:
    • Se dice que es, en general, similar a Go: colas en lugar de canales, APIs asíncronas/concurrentes en vez de la palabra clave go, y una construcción similar a select.
    • Algunos lamentan la falta de cobertura de esto en el material de ejemplo.

IA, ecosistema y soporte para LLM

  • Hay tensión en torno a la IA:
    • Algunos critican las prohibiciones a nivel de proyecto de Zig sobre contribuciones generadas por IA y a la gente “anti-IA” por perjudicar la adopción.
    • Otros aclaran que puedes usar libremente IA para escribir aplicaciones en Zig; las restricciones aplican sobre todo al propio código base de Zig.
  • Para mejorar el soporte de Zig en los LLM, se sugieren:
    • Integración con el servidor de lenguaje de Zig, documentación local y el código fuente como referencias canónicas.
    • Construir servidores/herramientas MCP para consultar documentación, linters, formateadores (zig fmt) y bases de código reales.
    • Usar historiales de proyectos de Zig como benchmarks para calificar PR generados por IA.
  • Algunas personas expresan que la IA ha hecho Rust más accesible y temen que Zig se pierda esa ola; otras argumentan que siempre puedes preguntarle directamente a un LLM en lugar de consumir tutoriales generados por IA.

Adopción, comunidad y motivación

  • Las percepciones varían:
    • Algunos ven Zig como prometedor por su toolchain, interoperabilidad con C y una sólida biblioteca estándar.
    • Otros predicen que seguirá siendo de nicho, con adopción corporativa limitada y una comunidad a veces descrita como hostil o elitista.
  • Anécdotas de uso:
    • Aficionados y profesionales no especializados en C/C++ usando Zig para drivers, capas FFI y proyectos personales.
  • Un comentarista cuestiona si Zig todavía “importa” en la era de la IA y cuenta que ha perdido motivación para seguir aprendiendo sobre él.