July 27, 2021

Ukraine Breaking News

Ukraine Breaking News | The Latest News In Ukraine

Perché usare la lingua Go

Perché usare la lingua Go


In

Golang, il linguaggio di programmazione Go e Google Language sono i nomi di un linguaggio di programmazione piuttosto giovane introdotto da Google nel 2009. Questo linguaggio compilato multithread è stato concepito come un sostituto sia per C ++ che per Java. I creatori sembravano rendere la routine del programmatore più semplice con Go. Inoltre, c’era l’idea di spostare da parte anche altri linguaggi maturi (come PHP).

Go continua a guadagnare popolarità poiché sia ​​Google che una comunità open source dedicata dei Gopher (un simbolo ufficiale di Go è un gopher) fanno molti sforzi per sviluppare il linguaggio.

Tuttavia, vale a malapena considerare Go un linguaggio killer in grado di eliminare altri linguaggi di programmazione: né C ++ né Java possono andare sprecati. Invece, Go si sta ritagliando una propria nicchia sul mercato. Il linguaggio è sicuramente buono per le app di sistema, le utilità di automazione, i servizi di rete e lo sviluppo lato server.

Inoltre, molte posizioni dei programmatori sul mercato del lavoro sono contrassegnate con “… non contro l’apprendimento del Go” dai datori di lavoro. Significa che molte società di software sono disposte a istruire i nuovi arrivati ​​nello sviluppo di Golang in mezzo alla reale mancanza di specifiche Go.

Le aziende sanno bene perché vanno a Go (scusate il gioco di parole). Le grandi aziende sono alla ricerca di modi per sostituire le vecchie lingue con Go nei loro servizi per rendere entrambi i processi più veloci e il consumo di hardware inferiore. Le aziende più piccole utilizzano generalmente Go per lo sviluppo back-end.

Go rimane ancora un argomento interessante nel campo dello sviluppo del software. Dove usare Golang e cosa puoi fare con Golang nella tua pratica di sviluppo sono i problemi che stiamo cercando di affrontare nel presente post. Tuttavia, non verrà visualizzato alcun tutorial “Hello world” in Go. Ma prima le cose principali.

Cos’è Golang: esplorando le radici

Per capire perché i nuovi linguaggi di programmazione in generale e Golang, in particolare, continuano ad apparire nello sviluppo del software, è necessario analizzare la situazione dell’attuale hardware-software.

1. Impeto tecnico e storico

Due figure cult dell’informatica Robert Pike e Ken Thompson (ex programmatori dei leggendari Bell Labs) hanno creato Golang nel tentativo di combinare la facilità di apprendimento insita in Python con la rapida eseguibilità di C / C ++. Ma perché? Cosa mancava ai due dinosauri di codifica nei linguaggi di programmazione esistenti? Se hanno introdotto una soluzione, doveva esserci un problema.

E il problema esisteva nelle determinate limitazioni hardware che l’industria dei computer aveva iniziato ad affrontare in quei giorni. La famosa legge di Moore che afferma che il numero di transistor in un circuito dovrebbe raddoppiare ogni due anni ha raggiunto il suo limite fisico. La potenza di elaborazione ha smesso di aumentare a un ritmo considerevole. Anche i processori multi-core non sono stati in grado di fornire alcun aumento significativo della potenza di calcolo. Né l’aggiunta di più core ai processori né l’aumento della cache potrebbero cambiare la situazione.

Pike e Thomson, probabilmente, si stavano rendendo conto che la via d’uscita non era nell’hardware. Per aumentare le prestazioni è necessario apportare alcuni miglioramenti al software. Il concetto di più thread in parallelo era noto prima di Golang, ma Pike e Tompson decisero di mettere in pratica l’idea con tutta la forza. Il fatto era che la maggior parte dei linguaggi di programmazione esistenti aveva le sue radici nel paradigma a thread singolo del secolo scorso. Hanno supportato il multi-threading, ovviamente, ma l’efficienza delle soluzioni risultanti lascia molto a desiderare.

2. La via del Golang

Quello era il momento giusto per la comparsa di Golang: i processori multi-core erano già diffusi nel 2009. La tendenza dell’hardware ad aggiungere più core continuerà molto probabilmente. Ecco perché sia ​​le applicazioni software che i linguaggi di programmazione in cui sono scritte le app dovrebbero seguire la concorrenza per essere scalabili, anche se molti core potrebbero apparire nei processori.

In che modo Go soddisfa la concorrenza? Invece dei thread, Go ha le miriadi di Goroutine che possono essere avviate contemporaneamente poiché solo 2 KB di memoria vengono consumati da una goroutine. I Goroutine usano i canali per comunicare tra loro tramite primitive incorporate. E smettono di consumare memoria quando il lavoro è finito. Quindi, Golang esegue la concorrenza in modo elegante, superando Java e C / C ++ in questo aspetto.

Un’altra caratteristica di Go che rende questo linguaggio abbastanza appropriato per interagire direttamente con l’hardware sono le sue prestazioni. A differenza dei linguaggi di livello superiore come Python, ad esempio, Golang non ha bisogno di essere interpretato. I processori comprendono il codice binario e Go salta la fase delle macchine virtuali che devono trasformare il codice “umano” in binari. Il linguaggio di codifica Golang è compilato dalla natura che fornisce le sue prestazioni tanto elevate quanto i linguaggi di livello inferiore come C / C ++. Ma i vantaggi di Go non finiscono qui.

Vantaggi dello sviluppo del Golang

Il fatto che Golang appartenga a Google mette un segno speciale su questa lingua. Si tratta di grandi aziende quando molte persone hanno bisogno di lavorare insieme allo stesso progetto. Ecco perché Go è concepito come un linguaggio di facile apprendimento che può essere rapidamente compreso da un folto gruppo di sviluppatori (spesso poco esperti) per poter sviluppare alcune applicazioni in modo collaborativo.

1. Sintassi

La sintassi semplice e chiara di Go consente ai programmatori di non utilizzare né standard esterni né commenti di terze parti per capirsi. La sintassi semplificata aiuta sia a scrivere il proprio codice sia a leggere il codice scritto da qualcun altro.

Molti sviluppatori confrontano Golang con altre lingue: sembra più attraente quando hai bisogno di solo 25 parole chiave in Go rispetto a 67 in PHP, per esempio. In esso è disponibile uno stimolo educativo poiché lo studio veloce del Go può spostare la tua attenzione dal Golang in quanto tale alla programmazione nel suo insieme.

C’è un rovescio della medaglia della sintassi semplice, tuttavia. La bassa soglia di apprendimento fa presumere che molti programmatori poco qualificati che non si preoccupano della qualità dei loro prodotti possano apparire sul mercato. Qualcosa di simile è accaduto con PHP nei primi anni 2000. Ma il tempo ha finalmente messo le cose in ordine. Numerosi framework PHP disponibili oggi impediscono che i “drop out” influenzino il mercato del lavoro. Inoltre, come accennato in precedenza, molte società di software istruiscono il proprio personale in Go per mantenere lo sviluppo di Golang ad un livello elevato.

2. Collaborazione

Il lavoro di squadra è un fattore chiave dello sviluppo di Golang. Non è un dogma, tuttavia: puoi scrivere codice in Go da solo. Ma molte aziende come CrowdStrike, ad esempio, stanno praticando una transizione aziendale a Golang per aumentare il pool dei loro sviluppatori in futuro.

La spinta collaborativa di Go è supportata da numerose biblioteche decenti che consentono agli sviluppatori di svolgere compiti di qualsiasi complessità. Anche la libreria Go standard da sola consente di ottenere molto. Inoltre, si verifica un’efficace sovrapposizione con le librerie in linguaggio C. Inoltre, molti sviluppatori presumono che le librerie Go siano solo librerie C leggermente impacchettate.

Ad ogni modo, il focus collaborativo del linguaggio di programmazione Go è chiaro per le grandi imprese: Google, BBC Worldwide, Dropbox, eBay, Yahoo, DigitalOcean, così come molte altre società stanno usando Golang nei loro progetti.

3. Prestazioni

Poiché Golang è un linguaggio di programmazione compilato, un’applicazione scritta in Go può essere sviluppata molto rapidamente. Avendo una semplice digitazione statica simile a quella inerente a Pascal, Go, allo stesso tempo, può vantare una migliore applicabilità, una caratteristica che condivide con Python. Le prestazioni veloci di Golang sono integrate dal supporto multipiattaforma. Questa meravigliosa combinazione di funzionalità Golang consente sia agli umani (programmatori) che all’hardware (processori) di trarre vantaggio da Go.

La programmazione Golang è irrilevante per creare un progetto grande o piccolo. Go funziona bene qua e là. Le app basate su Go hanno periodi di time-to-market relativamente brevi che aumentano la fattibilità dello sviluppo di Golang in generale. Inoltre, il cosiddetto software robusto che dovrebbe essere estremamente affidabile sembra seguire sia la struttura di Golang che le sue capacità prestazionali.

4. Strumenti

Un toolkit nativo che consiste di vari strumenti peculiari è disponibile nel linguaggio di programmazione Golang. Uno degli strumenti “go fmt” aiuta a standardizzare il codice. Un altro “vai dal veterinario” può trovare errori nel tuo codice. Citeremo alcuni altri strumenti specifici di Go per mostrare cosa hanno fatto i creatori di Golang per semplificare la codifica in Go, specialmente per i neofiti.

Anche i bambini in età scolare possono sviluppare programmi piuttosto complicati in Go dopo una breve formazione in questa lingua. C’è una storia su Internet su un gruppo di ragazzi di 12 anni che hanno creato un generatore di frattali di Mandelbrot a Golang dopo appena 3 ore di allenamento. Anche se la storia è un mito, la comodità di Golang per gli sviluppatori è tutt’altro che un pio desiderio. Le seguenti capacità di Golang lo dimostrano chiaramente:

  • L’automazione di processi di routine come la gestione della memoria e la garbage collection consente ai programmatori di concentrarsi sulla logica e sull’architettura di business: il compilatore assume tutte le routine;
  • La creazione automatica della documentazione viene eseguita con il comando “godoc” che può trovare tutti i commenti necessari per creare un tutorial per un programma;
  • Lo strumento speciale “gofix” esegue la scansione del codice per esplorare la sintassi obsoleta rimanente dopo che l’evoluzione di Go va avanti;
  • Numerosi strumenti di test facilitano lo sviluppo di Golang per evitare quasi completamente i test di terze parti. “Golint” formula raccomandazioni basate sulla documentazione ufficiale (Effective Go e CodeReviewComments), “gosimple” semplifica la sintassi ingombrante, “gas” esplora le vulnerabilità (SQL injection, valori hash non sicuri e simili). Inoltre, c’è un’utilità speciale che trova il “codice morto” – parti di codice inattive che sono disponibili ma non in uso;
  • Se il tuo programma consuma molta memoria o sovraccarica i processori, vale la pena valutare la situazione attraverso uno speciale rapporto di testo: un profilo. I profili di varie parti di codice appaiono grazie allo speciale pacchetto Go “pprof” che funziona tramite lo strumento da riga di comando “go tool pprof”. L’utility “graphviz” fornisce la visualizzazione dei profili.
  • Golang difficilmente pretenderebbe di essere un linguaggio di programmazione di basso livello senza la capacità di lavorare direttamente con la memoria. Il pacchetto “non sicuro” è disponibile in Go per tale scopo.

Cosa puoi fare con Golang?

Affrontando la questione di dove viene utilizzato Golang, sarebbe ragionevole risalire alle origini di questo linguaggio di programmazione. È apparso da un paradigma aziendale. Pertanto, i sistemi aziendali di grandi dimensioni sembrano corrispondere al meglio alle capacità di Golang. Si tratta principalmente di sviluppo back-end. Anche se è possibile creare un’interfaccia utente con Go, il background aziendale del linguaggio di programmazione Golang suggerisce di utilizzare Go dove può portare i maggiori vantaggi.

Molti sviluppatori Go condividono la loro esperienza nel contesto del software specifico che creano con Golang. Una parte significativa delle loro app appartiene a vari sottocomponenti di gigantesche piattaforme aziendali simili ai sistemi di gestione (sistemi di gestione della proprietà, sistemi di gestione dei contenuti, sistemi di gestione di qualsiasi altra cosa, come li chiami). I loro casi d’uso sono numerosi:

  • applicazioni di monitoraggio,
  • notifica di servizio,
  • strumenti di reporting,
  • varie utilità della riga di comando,
  • sistemi di stoccaggio,
  • app di binding inverso,
  • software specifico per sandbox (Docker, Kubernetes),
  • pianificatori del lavoro di squadra,
  • servizi di geofence (Uber),
  • chat room (Twitch),
  • API di automazione (Dailymotion),
  • librerie client memcache (Dropbox).

In altre parole, servizi di rete altamente scalabili, combinazioni di microservizi, sistemi di amministrazione fortemente caricati e varie applicazioni per l’elaborazione batch in background costituiscono l’area in cui vale sicuramente la pena utilizzare il linguaggio di programmazione Golang.