Go (linguaggio): cosa è, per cosa si usa e mini tutorial
Cos’è Go?
Go, anche noto come Golang, è un linguaggio di programmazione potente e efficiente, ideale per applicazioni ad alte prestazioni e distribuite.
La storia di Go ha inizio nel 2007 quando fu sviluppato da Google. L’obiettivo era di creare un linguaggio di programmazione moderno che combinasse efficienza e facilità d’uso.
Nel 2009, Go fu rilasciato come open source. Guadagnò rapidamente popolarità grazie alle sue caratteristiche: gestione della concorrenza, compilazione veloce e sintassi chiara.
Negli anni successivi, Go ha visto una crescita costante della sua community di sviluppatori e una proliferazione di librerie e framework, che lo hanno reso una scelta sempre più diffusa per progetti di sviluppo software.
EgoValeo è leader nell’Head Hunting di professionisti in ambito Information Technology e Engineering.
Per cosa si usa Go?
Go è utilizzato per lo sviluppo di applicazioni di basso livello, come i sistemi operativi, grazie alla sua efficienza e alla gestione ottimizzata della memoria.
E’ un linguaggio ideale per applicazioni che richiedono una gestione efficiente delle richieste, come server web, microservizi e servizi cloud.
E’ anche adatto allo sviluppo software critici in termini di prestazioni e sicurezza, grazie alla sua robusta sicurezza e alla rapidità di compilazione.
Inoltre, il linguaggio offre un ecosistema di librerie e framework adatti per la data science, il machine learning e Internet of Things (IoT).
Perché il linguaggio Go è diventato popolare
Il linguaggio Go è diventato popolare principalmente per tre motivi chiave: efficienza, concorrenza e facilità d’uso.
- Efficienza. Go Si distingue per la sua efficienza nell’esecuzione dei programmi, grazie alla sua gestione della memoria automatica e alla compilazione veloce, molto utile in contesti di alte prestazioni e necessità di tempi di risposta rapidi.
- Concorrenza. La gestione della concorrenza è una delle caratteristiche distintive di Go. Le goroutine semplificano la scrittura di codice concorrente, consentendo alle applicazioni di sfruttare appieno le capacità dei processori moderni. Questo è molto utile in contesti di applicazioni distribuite e servizi web ad alta concorrenza.
- Facilità d’uso. Go offre una sintassi chiara e intuitiva ed è quindi accessibile sia ai principianti che agli sviluppatori esperti. Consente di scrivere codice più leggibile e manutenibile, accelerando lo sviluppo.
Non ultimo, l’ecosistema di Golang è in continua crescita, con molte librerie e framework disponibili per lo sviluppo.
EgoValeo è leader nell’Head Hunting di professionisti in ambito Information Technology e Engineering.
Mini tutorial su Golang
Ecco un breve programma scritto in Go che calcola la somma dei primi N numeri interi positivi utilizzando più goroutine in parallelo per accelerare il processo.
package main
import (
"fmt"
"sync" // Importiamo il pacchetto sync per la gestione delle goroutine
)
func main() {
N := 1000000 // Numero di numeri da sommare
// Creiamo un canale per comunicare i risultati
resultCh := make(chan int)
// Creiamo un gruppo di attesa per sincronizzare le goroutine
var wg sync.WaitGroup
// Dividiamo il lavoro tra 4 goroutine
numGoroutines := 4
numPerGoroutine := N / numGoroutines
for i := 0; i < numGoroutines; i++ {
wg.Add(1) // Aggiungiamo una goroutine al gruppo di attesa
go func(start, end int) {
defer wg.Done() // Segnaliamo al gruppo di attesa che questa goroutine ha terminato
sum := 0
for j := start; j <= end; j++ {
sum += j
}
resultCh <- sum // Inviare il risultato al canale
}(i*numPerGoroutine+1, (i+1)*numPerGoroutine)
}
// Chiudiamo il canale dopo che tutte le goroutine hanno terminato
go func() {
wg.Wait()
close(resultCh)
}()
// Sommiamo i risultati parziali dai canali
totalSum := 0
for partialSum := range resultCh {
totalSum += partialSum
}
fmt.Printf("La somma dei primi %d numeri interi positivi è %d\n", N, totalSum)
}
Questo programma crea un canale resultCh
per comunicare i risultati parziali delle goroutine, utilizza un gruppo di attesa sync.WaitGroup
per sincronizzare le goroutine e le divide in base al numero specificato (numGoroutines
) per calcolare porzioni di somma dei numeri interi. Alla fine, somma i risultati parziali per ottenere la somma totale dei primi N numeri interi positivi.
Le goroutine vengono utilizzate per eseguire il calcolo in modo concorrente, il che può accelerare significativamente l’esecuzione del programma su sistemi con più core o CPU.
Prova il programma su questo compilatore Golang Online!
FAQ
Go è utilizzato per sviluppare applicazioni ad alte prestazioni, servizi web, server, microservizi e applicazioni distribuite.
Go, anche noto come Golang, è un linguaggio di programmazione potente e efficiente, ideale per applicazioni ad alte prestazioni e distribuite.
Roberto Di Bartolomeo ha maturato una lunga esperienza professionale in ambito IT ed Organizzazione, rivestendo ruoli dirigenziali di CIO in grandi aziende nelle industries servizi HR, banking e pubblica amministrazione. Ingegnere elettronico, ha speso i primi anni della sua carriera in una società di consulenza internazionale ed ha conseguito un master alla Bocconi di Milano. E’ partner di EgoValeo e consulente per la Digital Transformation.