HARDCODE.BLOG

Coding, the superpower that nobody wants to have.

17 Jul 2024

Scopriamo Zig: un tutorial facile facile in 10 lezioni

Benvenuti al nostro tutorial su Zig, un linguaggio di programmazione moderno e performante che sta guadagnando sempre più popolarità tra gli sviluppatori. Zig è noto per la sua semplicità, efficienza e robustezza, rendendolo ideale per progetti di sistema e applicazioni ad alte prestazioni. In questo percorso in 10 sezioni, esploreremo i concetti fondamentali di Zig attraverso esempi pratici che potrai eseguire direttamente nell’articolo. Pronto a iniziare? Andiamo!

🌐
Ti piacciono questi temi?

Aiutaci a migliorare e a raggiungere più persone! Se trovi utile questo articolo, condividilo con i tuoi amici e colleghi sui social. La tua condivisione ci aiuta a crescere e a portare contenuti di qualità a un pubblico sempre più ampio. Grazie mille per il tuo contributo!

Lezione 1 - Introduzione a Zig

Zig è un linguaggio di programmazione progettato per essere veloce, sicuro e semplice. È ideale per lo sviluppo di sistemi e applicazioni dove la performance e la gestione della memoria sono critiche.

Per iniziare, ecco qui il classico Hello World!

const std = @import("std");

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

Lezione 2 - Variabili e tipi di dato

In Zig, le variabili possono essere dichiarate con const per costanti e var per variabili mutabili. Zig è tipizzato staticamente, quindi ogni variabile ha un tipo specifico.

const std = @import("std");

pub fn main() void {
    const a: i32 = 10;
    var b: f32 = 1;
    b = b + 1;
    std.debug.print("a: {}, b: {}\n", .{a, b});
}

Lezione 3 - Strutture di controllo

Zig supporta le classiche strutture di controllo come if, else, e while.

Ecco alcuni esempi pratici

const std = @import("std");

pub fn main() void {
    const condition = true;
    if (condition) {
        std.debug.print("Condition is true\n", .{});
    } else {
        std.debug.print("Condition is false\n", .{});
    }
}

Lezione 4 - Funzioni

Le funzioni in Zig sono dichiarate con la parola chiave fn.

const std = @import("std");

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

pub fn main() void {
    const result = add(5, 7);
    std.debug.print("Result: {}\n", .{result});
}

Lezione 5 - Arrays e slices

Zig offre potenti strumenti per lavorare con array e slices.

const std = @import("std");

pub fn main() void {
    const array = [5]i32{1, 2, 3, 4, 5};
    const slice = array[1..4];
    std.debug.print("Slice: {}/{}/{}\n", .{slice[0], slice[1], slice[2]});
}

Lezione 6 - Punteri e allocazione dinamica

La gestione dei puntatori e dell’allocazione dinamica è cruciale per applicazioni ad alte prestazioni.

const std = @import("std");

pub fn main() void {
    const x: i32 = 10;
    const ptr = &x;
    std.debug.print("Value of x: {}, Value at ptr: {}\n", .{x, ptr.*});
}

Lezione 7 - Gestione degli errori

Zig offre un sistema di gestione degli errori molto robusto.

const std = @import("std");

fn mayFail() !void {
    return error.SomeError;
}

pub fn main() void {
    if (mayFail()) |err| {
        std.debug.print("Error occurred: {}\n", .{err});
    } else {
        std.debug.print("No error occurred\n", .{});
    }
}

Lezione 8 - Strutture

Le strutture in Zig sono simili a quelle di altri linguaggi, ma con alcune peculiarità.

const std = @import("std");

const Person = struct {
    name: []const u8,
    age: u8,
};

pub fn main() void {
    const person = Person{name: "Alice", age: 30};
    std.debug.print("Name: {}, Age: {}\n", .{person.name, person.age});
}

Lezione 9 - Generici

I generici permettono di scrivere codice riutilizzabile e flessibile.

const std = @import("std");

fn identity(comptime T: type, value: T) T {
    return value;
}

pub fn main() void {
    const result = identity(i32, 42);
    std.debug.print("Result: {}\n", .{result});
}

Lezione 10 - Conclusione e prossimi passi

Hai completato il tutorial di base su Zig! Ora sei pronto per esplorare ulteriormente e applicare ciò che hai imparato in progetti reali. Continua a sperimentare e approfondire la tua conoscenza di Zig per sfruttarne al massimo le potenzialità.

const std = @import("std");

pub fn main() void {
    std.debug.print("Congratulations, you've completed the tutorial!\n", .{});
}

Zig è un linguaggio potente e flessibile, perfetto per chi cerca performance, sicurezza e controllo. Continua a esplorare e a costruire grandi cose con Zig!

📨
Abbiamo una newsletter!!!

Se ti appassiona l’ingegneria del software, non perdere l'occasione di rimanere aggiornato!
Iscriviti alla nostra newsletter, SWE Spotlight, per ricevere contenuti esclusivi e tech news.

Written by: Francesco Bianco

Leggi anche

comments powered by Disqus