LORENZO

DEL ROSSI

Computer Engineer

Perchè scegliere Go?

2 min.

In un mondo con tecnologie e linguaggi sempre più numerosi sviluppare un’applicazione Web efficiente è diventato ancor di più un tema molto delicato da affrontare.

Dato che per ogni problema complesso il miglior modo di risolverlo è dividerlo in sotto-problemi da risolvere uno alla volta (la famosa tecnica del Divide et Impera), in questo articolo tenterò di risolvere il primo sotto-problema alla base dello sviluppo della nostra applicazione: la scelta del linguaggio di programmazione.

Dal titolo si può facilmente intuire che la scelta è ricaduta su Go, il nuovo linguaggio di programmazione sviluppato da Google. Ovviamente tale decisione non è dovuta solamente alla mia passione di testare nuove teconologie (Go infatti è stato annunciato ufficialmente nel 2009 e rilasciato nel 2012) o dall’autorevolezza di chi ha contribuito alla sua creazione (il team di sviluppo della prima versione di Go era composto da Robert Griesemer, Rob Pike e Ken Thompson, per chi non li conoscesse vale la pena dare un’occhiata ai loro precedenti lavori), ma anche ad una serie di motivazioni che sto per esporvi. Per stabilire un paragone con linguaggi ampiamente conosciuti ed utilizzati nel mondo IT prenderò come linguaggi di riferimento Java e Python.

Problemi di concorrenza più semplici da risolvere…

L’aspetto di Go che mi ha incuriosito e spinto a prenderlo in considerazione più approfonditamente è il fatto che è il primo linguaggio di programmazione nato quando i calcolatori erano già concepiti con architetture multi-processore, dunque il linguaggio implementa anche le cosiddette “goroutines” per tener conto che potrebbero essere eseguiti contemporaneamente porzioni di codice su diversi processori in concorrenza. Le goroutines sono simili ai threads tranne per il fatto che esse sono ottimizzate sia a livello di performance che a livello di memory footprint.

…e non solo

Go compila l’intero programma in un singolo file binario ed a differenza di Python non c’è bisogno di un interpreter per essere eseguito ed a differenza di Java non c’è bisogno di una Virtual Machine per essere eseguito. Inoltre la toolchain di Go prevede un detector di corsa critica, feature non presente nè in Java nè in Python.
Si consideri anche che strumenti sempre più utilizzati e conosciuti come Docker e Kubernetes sono stati sviluppati in Go.

Questi sono i motivi più evidenti per cui ho scelto (e consiglio) di utilizzare Go come base per lo sviluppo di un’applicazione Web.

#LetsGO