Tutoriel Zig pour débutants : Comment installer et utiliser Zig

Cet article présente les bases de Zig, comment l'installer, etc.

Louis Dupont

Louis Dupont

5 June 2025

Tutoriel Zig pour débutants : Comment installer et utiliser Zig

Zig est un langage de programmation moderne et polyvalent, conçu pour être robuste, optimal et maintenable. En mettant l'accent sur la simplicité et la clarté, Zig offre un contrôle de bas niveau tout en évitant les flux de contrôle et les allocations cachés. Ce tutoriel vous guidera à travers le processus d'installation, la création de votre premier programme Zig et l'exécution de tests. À la fin, vous aurez une base solide pour explorer plus en détail ce langage puissant.

Alors que nous explorons des outils de développement puissants, il convient de mentionner Apidog – l'alternative ultime à Postman pour le développement et les tests d'API. Apidog combine la documentation, la conception, la simulation, les tests et le débogage d'API en une seule plateforme rationalisée.

button

Grâce à son interface intuitive, ses fonctionnalités collaboratives et son intégration transparente du contrôle de version, Apidog améliore considérablement l'efficacité du flux de travail pour les développeurs travaillant avec des API. Son ensemble complet de fonctionnalités comprend des tests automatisés, la gestion des environnements, l'enchaînement des requêtes et la validation intelligente des réponses, ce qui en fait un outil essentiel pour les équipes de développement modernes.

button

Avant de vous lancer dans la programmation Zig, pensez à ajouter Apidog à votre boîte à outils de développeur pour améliorer votre productivité globale lorsque vous travaillez avec des API et des services web.

Partie 1 : Installation de Zig

Avant de pouvoir commencer à programmer en Zig, vous devez installer le compilateur et les outils. Le processus d'installation varie en fonction de votre système d'exploitation.

Installation sur Linux

Vous avez deux options principales pour installer Zig sur Linux :

Option 1 : Utilisation du gestionnaire de paquets de votre distribution

La plupart des principales distributions Linux empaquettent la dernière version de Zig. C'est souvent l'approche la plus simple :

# Pour Debian/Ubuntu
sudo apt install zig

# Pour Fedora
sudo dnf install zig

# Pour Arch Linux
sudo pacman -S zig

Option 2 : Installation manuelle

Si votre distribution n'a pas Zig ou si vous avez besoin d'une version spécifique :

Téléchargez une version pré-construite de Zig sur le site officiel qui correspond à votre architecture CPU

Pour vérifier votre architecture, utilisez :

uname -m

Extrayez l'archive à l'aide de tar :

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

Ajoutez le binaire Zig à votre PATH :

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

Appliquez les modifications :

source ~/.bashrc

Installation sur Windows

Les utilisateurs de Windows ont plusieurs options :

Option 1 : Utilisation des gestionnaires de paquets

# Using Chocolatey
choco install zig

# Using Winget
winget install zig.zig

# Using Scoop
scoop install zig

Option 2 : Installation manuelle

Téléchargez une version pré-construite de Zig pour Windows qui correspond à votre architecture CPU (la plupart des systèmes Windows utilisent x86_64/AMD64)

Vérifiez votre architecture avec :

$Env:PROCESSOR_ARCHITECTURE

Extrayez le fichier ZIP

Ajoutez Zig à votre PATH :

Pour l'utilisateur actuel :

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

Pour l'ensemble du système :

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

Fermez et rouvrez votre terminal

Installation sur macOS

Le moyen le plus simple d'installer Zig sur macOS est d'utiliser Homebrew :

brew install zig

Vérification de votre installation

Après l'installation, vérifiez que Zig est correctement installé en exécutant :

zig version

Vous devriez voir une sortie comme :

0.13.0

Partie 2 : Hello, World ! en Zig

Maintenant que Zig est installé, créons votre premier programme Zig : l'exemple traditionnel « Hello, World ! ».

Création du fichier programme

  1. Créez un nouveau fichier nommé main.zig
  2. Ouvrez-le dans votre éditeur de texte préféré
  3. Ajoutez le code suivant :
const std = @import("std");

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

Décomposons ce que fait ce code :

Exécution du programme

Pour construire et exécuter votre programme, utilisez la commande suivante :

zig run main.zig

Cela compile votre code et l'exécute immédiatement. Vous devriez voir la sortie :

Hello, World!

Remarque importante sur l'encodage des fichiers

Zig nécessite un encodage UTF-8 pour les fichiers sources. Si vous rencontrez une erreur telle que invalid bytes, votre fichier peut avoir un encodage différent. Pour corriger cela :

zig fmt main.zig

Cela ré-encodera votre fichier en UTF-8. Ensuite, rouvrez le fichier dans votre éditeur.

Partie 3 : Exécution de tests en Zig

Zig dispose d'un framework de test intégré qui facilite l'écriture et l'exécution de tests. Comprendre comment utiliser les tests est crucial lorsque vous apprenez Zig, d'autant plus que de nombreux exemples dans la documentation Zig sont fournis sous forme de tests.

Création d'un test simple qui réussit

Créons un fichier de test de base :

  1. Créez un nouveau fichier nommé test_pass.zig
  2. Ajoutez le code suivant :
const std = @import("std");
const expect = std.testing.expect;

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

Ce code importe le module de test, puis définit un test nommé « always succeeds » qui attend que true soit vrai (ce qui est toujours le cas).

Pour exécuter ce test :

zig test test_pass.zig

Vous devriez voir une sortie similaire à :

All 1 tests passed.

Création d'un test qui échoue

Maintenant, créons un test qui échoue pour comprendre comment Zig gère les échecs de test :

  1. Créez un fichier nommé test_fail.zig
  2. Ajoutez le code suivant :
const std = @import("std");
const expect = std.testing.expect;

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

Ce test attend que false soit vrai, ce qui échoue évidemment.

Lorsque vous exécutez :

zig test test_fail.zig

Vous verrez une sortie d'erreur comme :

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.

Comprendre la gestion des erreurs dans les tests

Le mot-clé try est crucial dans les tests Zig. Il tente d'exécuter une fonction qui peut renvoyer une erreur. Si une erreur est renvoyée, elle propage cette erreur à l'appelant.

Essayez d'exécuter le même test sans le mot-clé try :

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

Vous obtiendrez une erreur du compilateur car vous ne gérez pas l'erreur potentielle que expect() pourrait renvoyer.

Partie 4 : Notions de base de Zig pour les débutants

Variables et constantes

En Zig, vous définissez les variables et les constantes comme suit :

const std = @import("std");

pub fn main() void {
    // Constante (ne peut pas être modifiée)
    const fixed_value = 42;

    // Variable (peut être modifiée)
    var changeable_value = 10;
    changeable_value = 20; // Ceci est autorisé

    // Vous pouvez spécifier les types explicitement
    const explicit_integer: i32 = 1234;
    var explicit_float: f64 = 3.14159;

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

Types de données de base

Zig possède plusieurs types de données intégrés :

const std = @import("std");

pub fn main() void {
    // Entiers
    const i: i32 = -42;       // Entier signé 32 bits
    const u: u32 = 42;        // Entier non signé 32 bits

    // Flottants
    const f: f32 = 3.14;      // Flottant 32 bits
    const d: f64 = 2.71828;   // Flottant 64 bits

    // Booléen
    const b: bool = true;

    // Caractères et chaînes
    const c: u8 = 'A';                    // Caractère (en tant qu'entier)
    const s: []const u8 = "Hello, Zig!";  // Chaîne (une tranche de u8)

    // Tableaux de taille fixe connue au moment de la compilation
    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});
}

Fonctions

Les fonctions en Zig sont définies à l'aide du mot-clé fn :

const std = @import("std");

// Fonction de base avec paramètres et valeur de retour
fn add(a: i32, b: i32) i32 {
    return a + b;
}

// Fonction qui peut renvoyer une erreur
fn divide(a: f32, b: f32) !f32 {
    if (b == 0) {
        return error.DivisionByZero;
    }
    return a / b;
}

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

    // Appeler une fonction qui peut renvoyer une erreur
    if (divide(10, 2)) |result| {
        std.debug.print("10 / 2 = {d}\\\\n", .{result});
    } else |err| {
        std.debug.print("Error: {}\\\\n", .{err});
    }

    // Une autre façon de gérer les erreurs
    const division_result = divide(10, 0) catch |err| {
        std.debug.print("Division failed: {}\\\\n", .{err});
        0; // Valeur par défaut en cas d'erreur
    };
    std.debug.print("Result (or default): {d}\\\\n", .{division_result});
}

Conclusion

Ce tutoriel a couvert l'essentiel pour démarrer avec Zig - l'installation sur différents systèmes d'exploitation, la création et l'exécution de votre premier programme et l'utilisation du framework de test de Zig. Nous avons également présenté des concepts fondamentaux tels que les variables, les types de données et les fonctions.

Zig est un langage puissant qui offre un contrôle de bas niveau tout en mettant l'accent sur la sécurité, la clarté et la maintenabilité. Son approche de la gestion des erreurs et de la gestion de la mémoire en fait une alternative intéressante aux langages comme C, C++ et Rust.

Pour poursuivre votre parcours Zig, pensez à :

N'oubliez pas que Zig est toujours en évolution, donc certaines fonctionnalités peuvent changer à mesure que le langage arrive à la version 1.0. Bon codage !

Explore more

Comment utiliser Deepseek R1 en local avec Cursor

Comment utiliser Deepseek R1 en local avec Cursor

Apprenez à configurer DeepSeek R1 local avec Cursor IDE pour une aide au codage IA privée et économique.

4 June 2025

Comment exécuter Gemma 3n sur Android ?

Comment exécuter Gemma 3n sur Android ?

Apprenez à installer et exécuter Gemma 3n sur Android via Google AI Edge Gallery.

3 June 2025

Comment utiliser Claude Code avec GitHub Actions

Comment utiliser Claude Code avec GitHub Actions

Découvrez Claude Code avec GitHub Actions : revues de code, corrections de bugs, implémentation de fonctionnalités. Tutoriel pour développeurs.

29 May 2025

Pratiquez le Design-first d'API dans Apidog

Découvrez une manière plus simple de créer et utiliser des API