Torna ai corsi
AI017 Professional

Impara a programmare con Go

Un'introduzione pratica e accessibile al linguaggio di programmazione Go, pensata per principianti. Il corso è strutturato in lezioni brevi e gestibili, con un tema ispirato all'esplorazione dello spazio, che copre la programmazione imperativa, tipi, funzioni, metodi, raccolte, stato e concorrenza.

4.9
24.0h
749 studenti
0 mi piace
Intelligenza Artificiale
Inizia ad imparare

Panoramica del corso

📚 Riepilogo del contenuto

Un'introduzione pratica e accessibile al linguaggio di programmazione Go. Il corso è strutturato in lezioni brevi e gestibili, con un tema ispirato all'esplorazione dello spazio, che copre la programmazione imperativa, i tipi, le funzioni, i metodi, le collezioni, lo stato e la concorrenza.

Scopri il piacere della programmazione con Go attraverso brevi lezioni e sette progetti conclusivi di viaggio interstellare.

Autore: Nathan Youngman, Roger Peppé

Ringraziamenti: Jennifer Stout, Marina Michaels, Matthew Merkes, Joel Kotarski, Aleksandar Dragosavljević, Renée French, Olga Shalakhina, Erick Zelaya, April Milne, Monica Kamsvaag.

🎯 Obiettivi di apprendimento

  1. Definire il linguaggio di programmazione Go e i suoi principali casi d'uso.
  2. Spiegare il ruolo del compilatore Go e i suoi vantaggi rispetto agli interpreti.
  3. Navigare nell'ambiente Go Playground per scrivere, compilare ed eseguire codice.
  4. Strutturare correttamente il codice Go usando lo stile obbligatorio "una vera parentesi", per evitare errori di sintassi.
  5. Gestire i dati usando diverse tecniche di dichiarazione delle variabili e operatori di assegnazione aritmetica.
  6. Generare numeri pseudocasuali e implementare logica condizionale usando ramificazioni e operatori logici.
  7. Dichiarare e formattare variabili floating-point usando float32 e float64 con larghezza e precisione specifiche.
  8. Identificare e mitigare gli errori causati da imprecisioni nei numeri floating-point e dallo scorrimento degli interi.
  9. Utilizzare il pacchetto big e le costanti non tipizzate per gestire numeri superiori ai limiti standard di bit.
  10. Definire e invocare funzioni usando parametri, argomenti e sintassi variadica.

🔹 Lezione 1: Lancio in orbita

Panoramica: Questa lezione presenta Go, il linguaggio di programmazione contemporaneo per il calcolo cloud. Gli studenti impareranno la differenza fondamentale tra la natura compilata di Go e i linguaggi interpretati, come utilizzare Go Playground per sperimentare immediatamente e la struttura base di un programma Go, compresi i pacchetti e la funzione main.

Risultati dell'apprendimento:

  • Definire il linguaggio di programmazione Go e i suoi principali casi d'uso.
  • Spiegare il ruolo del compilatore Go e i suoi vantaggi rispetto agli interpreti.
  • Navigare nell'ambiente Go Playground per scrivere, compilare ed eseguire codice.

🔹 Lezione 2: Logica del Controllo Missione

Panoramica: Questa lezione introduce i blocchi fondamentali della programmazione in Go, concentrandosi sulla struttura del codice e sul controllo della sua esecuzione. Gli studenti impareranno lo stile obbligatorio "una vera parentesi" e i punti di ingresso del programma, procederanno con scorciatoie per la dichiarazione delle variabili e gli operatori matematici, e termineranno con la logica decisionale basata su Booleani, confronti e ramificazioni.

Risultati dell'apprendimento:

  • Strutturare correttamente il codice Go usando lo stile obbligatorio "una vera parentesi" per evitare errori di sintassi.
  • Gestire i dati usando diverse tecniche di dichiarazione delle variabili e operatori di assegnazione aritmetica.
  • Generare numeri pseudocasuali e implementare logica condizionale usando ramificazioni e operatori logici.

🔹 Lezione 3: La fisica dei dati spaziali

Panoramica: Questa lezione esplora come Go gestisce i dati numerici, dalle precisioni frazionarie dei numeri floating-point alle scale massicce richieste per distanze astronomiche. Gli studenti impareranno a gestire i limiti della memoria del computer, inclusi gli errori di imprecisione nei numeri floating-point e lo scorrimento degli interi, mentre padroneggiano la conversione esplicita dei tipi e l'uso del pacchetto big per gestire dimensioni numeriche "insolite".

Risultati dell'apprendimento:

  • Dichiarare e formattare variabili floating-point usando float32 e float64 con larghezza e precisione specifiche.
  • Identificare e mitigare gli errori causati da imprecisioni nei numeri floating-point e dallo scorrimento degli interi.
  • Utilizzare il pacchetto big e le costanti non tipizzate per gestire numeri superiori ai limiti standard di bit.

🔹 Lezione 4: Costruzione di moduli modulari

Panoramica: Questa lezione copre i blocchi fondamentali dei programmi Go: funzioni, tipi personalizzati e metodi. Gli studenti impareranno a incapsulare logiche per riutilizzarle, definire nuovi tipi con comportamenti specifici e sfruttare le funzioni di prima classe—including closure e funzioni anonime—per creare codice flessibile e modulare. La lezione si conclude con un progetto pratico su tabelle di conversione della temperatura.

Risultati dell'apprendimento:

  • Definire e invocare funzioni usando parametri, argomenti e sintassi variadica.
  • Distinguere tra identificatori esportati e non esportati usando le convenzioni di denominazione di Go.
  • Creare tipi personalizzati e associarvi comportamenti tramite metodi e ricevitori.

🔹 Lezione 5: Riempimento della stiva

Panoramica: Questa lezione tratta le strutture dati essenziali in Go per gestire collezioni di informazioni. Passa dalle matrici di lunghezza fissa e dal loro comportamento di copia in memoria a slice dinamici che fungono da finestre flessibili sui dati, e infine ai mappe per ricerche chiave-valore efficienti. L'unità culmina nel progetto conclusivo "Gioco della vita", che dimostra come usare slice multidimensionali per simulare sistemi complessi.

Risultati dell'apprendimento:

  • Dichiarare, inizializzare e iterare su matrici di lunghezza fissa e griglie multidimensionali.
  • Manipolare slice usando intervalli di indice e crescita dinamica tramite la funzione append.
  • Gestire l'efficienza della memoria distinguendo tra lunghezza e capacità e preallocando collezioni con make.

🔹 Lezione 6: Strutturazione degli habitat marziani

Panoramica: Questa lezione introduce l'approccio di Go nell'organizzazione di dati e comportamenti complessi. Gli studenti impareranno a raggruppare tipi di dati diversi in strutture (struct), a inizializzarle usando letterali composti e a gestirne il comportamento tramite metodi e funzioni costruttrici. La lezione esplora anche la filosofia progettuale unica di Go: favorire la composizione rispetto all'ereditarietà e usare interfacce implicite per ottenere polimorfismo.

Risultati dell'apprendimento:

  • Definire, inizializzare e copiare strutture per gestire dati complessi relativi alle coordinate marziane e ai rover.
  • Codificare strutture Go in formato JSON usando tag di struttura per uno scambio di dati personalizzato.
  • Implementare metodi, funzioni costruttrici e incorporamento di strutture per creare codice riutilizzabile e ben organizzato.

🔹 Lezione 7: Navigare nel tunnel del gopher

Panoramica: Questa lezione esplora il potere e la sicurezza dell'indirezione in Go, concentrandosi su come i puntatori permettano una mutazione efficiente dei dati e una gestione della memoria. Fornisce un solido quadro per la programmazione difensiva insegnando agli studenti come gestire valori nil, gestire risorse con defer e implementare modelli idiomatici di gestione degli errori—culminando nell'applicazione di queste regole a un motore di validazione del Sudoku.

Risultati dell'apprendimento:

  • Usare l'ampersand (&) e l'asterisco (*) per gestire indirizzi di memoria e dereferenziare valori.
  • Implementare parametri e ricevitori puntatore per abilitare la mutazione dei dati nelle funzioni e nei metodi.
  • Navigare valori nil all'interno di slice, mappe e interfacce senza causare panic in tempo di esecuzione.

🔹 Lezione 8: Comunicazione tra rover multipli

Panoramica: Questa lezione introduce i primitivi fondamentali della concorrenza in Go: goroutine e canali. Esplora come eseguire compiti in modo indipendente, comunicare in modo sicuro tra di essi e gestire lo stato condiviso usando Mutex per evitare condizioni di competizione. La lezione si conclude con un progetto conclusivo che simula rover marziani che navigano una griglia e segnalano scoperte.

Risultati dell'apprendimento:

  • Avviare e gestire compiti concorrenti usando la parola chiave go.
  • Implementare una comunicazione sicura tra goroutine usando canali e l'istruzione select.
  • Costruire pipeline di dati e gestire i cicli di vita delle goroutine chiudendo i canali.