13 Maggio, 2019 | Di

Perché programmare con GO?

Perché programmare con GO

Perché imparare a programmare con Go

Scegliere un linguaggio di programmazione da imparare non è mai semplice.

A volte si può scegliere un linguaggio perché è trendy, a volte perché qualcuno ce lo consiglia. Spesso si è attirati dalla curiosità di scoprire quali vantaggi abbia rispetto ai suoi predecessori.

Dando un'occhiata al stackoverflow survey 2019, scopriamo che Go è uno tra i linguaggi di programmazione più amati e richiesti a livello globale.

Come abbiamo già detto spiegando che cos’è Go, questo linguaggio è stato sviluppato per rendere la scrittura, la documentazione e la manutenzione del codice più efficienti e più  semplici.

Semplificare la vita a sviluppatori e ingegneri significa prioritizzare alcuni aspetti del linguaggio rispetto ad altri e concentrarsi su una visione d'insieme di tutto il processo per non perdere di vista l’obiettivo: scrivere un software ben strutturato, documentato e di facile manutenzione.

Le priorità di Go

Durante lo sviluppo del linguaggio ci si è quindi concentrati sul risolvere alcune problematiche classiche dell’ingegneria del software, che necessitano una visione di tutto il processo di sviluppo e generalmente non vengono affrontate durante la definizione delle proprietà di un linguaggio:

  • lentezza della compilazione

  • “personalizzazione” del codice

  • dipendenze incontrollate

  • difficoltà di lettura e comprensione del codice

  • documentazione inesistente o non automaticamente generabile

  • costo degli aggiornamenti

  • difficoltà nello scrivere strumenti per gestire il linguaggio

 

 

Durante una presentazione sulle scelte sintattiche e semantiche del linguaggio, Rob Pike (uno dei creatori del linguaggio) descrive con un esempio come si è deciso di utilizzare l’indentazione con parentesi graffe rispetto ad altri tipi:

“Come esempio consideriamo la rappresentazione della struttura di un programma. Qualcuno potrebbe preferire l’uso di indentazione, nello stile di Python o Haskell, al posto dei blocchi di codice delimitati da parentesi graffe (come nel C). Nonostante le preferenze di ciascuno, l’esperienza maturata osservando e analizzando le build di codice e i test falliti ci ha portato a concludere che molti problemi sono causati da dettagli come l’invisibile variazione di indentazione di un pezzo di codice. La nostra posizione a questo proposito è che anche se usare gli spazi per l’indentazione è una soluzione carina per programmi di piccole dimensioni, la scelta non scala a sufficienza e, più grande e più eterogeneo è il software, maggiori problemi può causare.  È meglio rinunciare alla comodità per sicurezza e affidabilità, quindi Go ha blocchi limitati da parentesi graffe.”

Con questa logica, il risultato è stato un linguaggio con queste caratteristiche:

  • veloce da compilare (molto veloce, rispetto ad altri linguaggi come il C)

  • codice standard (regole ben definite e tool per la corretta manutenzione)

  • dipendenze controllate (utilizzando il sistema di dipendenze di Go)

  • codice facile da leggere e comprendere (grazie alla standardizzazione e le regole promosse in fase di compilazione)

  • documentazione autogenerata dal codice (attraverso un uso intelligente dei commenti)

  • aggiornamenti più agevoli (grazie anche al codice standardizzato)

  • strumenti avanzati per un'analisi del codice e delle sue componenti (gli strumenti del go tooling)

 

 

Alcuni punti di forza di Go

  1. Go include un framework completo per il testing e la profilazione di un programma.

  2. La documentazione è generata automaticamente partendo dai commenti all’interno del codice, rendendo standard anche questa.

  3. Go è fortemente tipizzato, garantendo la sicurezza rispetto ai tipi (e al loro utilizzo).

  4. Go ha un codice molto leggibile, grazie anche ad un vocabolario molto ristretto di 25 parole chiave.

  5. I programmi sono suddivisi in packages che offrono una chiara separazione del codice.

  6. Go implementa la concorrenza di default. Grazie a goroutines e channels, con una singola parola chiave (go) si può rendere una funzione concorrente.

  7. Le performance di Go sono estremamente concorrenziali: il codice compilato offre prestazioni molto simili ai linguaggi più performanti come il C.

  8. L’uso di un garbage collector molto efficiente permette di non doversi preoccupare della gestione della memoria e, al prezzo di pochi istanti, si evitano problematiche legate alla allocazione e liberazione della memoria.

  9. La standard library di Go include numerosissimi packages in grado di risolvere numerosissimi problemi, senza dover usare dipendenze esterne.

  10. Go compila nativamente su numerosissime piattaforme, tra cui: Darwin (MacOS), Linux e Windows, permettendo di creare strumenti multipiattaforma in maniera semplice.

  11. La community Go è ampia e variegata. Oltre a numerosi eventi in Europa e nel Mondo, anche a Milano abbiamo l’onore di ospitare la community del Meetup Golang Milano che si ritrova ogni due mesi per discutere e approfondire tematiche legate al linguaggio.

Potrebbe interessarti: