Università Statale di Milano - Dipartimento di Informatica: lezione sul Linguaggio GO (Golang)

Il Linguaggio GO (Golang) utilizzato presso l'Università Statale di Milano (Informatica)



Il linguaggio GO è open source, nasce dalla necessità di rendere
il linguaggio C++ maggiormente leggibile e più conciso . È tra i linguaggi di programmazione più promettenti e innovativi.

Con una crescita di oltre 2 punti percentuali, capace di assicurargli un balzo di ben 40 posizioni nell'annuale graduatoria di settore stilata da Tiobe Index, Go (o Golang) si è assicurato il premio – figurativo, per alcuni versi – di linguaggio di programmazione a più rapida crescita del 2016. Ideato nel 2007 da alcuni ingegneri Google, Go è stato utilizzato per realizzare il 2,325% dei nuovi software "nati" nel corso del 2016 e, nonostante sia una percentuale di adozione ancora tutto sommato bassa, è considerato uno dei linguaggi più promettenti nel panorama dello sviluppo software.

Diversi i motivi di questo successo. Dopo una crescita piuttosto lenta nei primissimi anni di vita (il primo software realizzato con Golang risale al 2009, mentre il rilascio di Go 1.0 è del 2012), il linguaggio di programmazione si è fatto sempre più apprezzare per la facilità di apprendimento – poco lo spazio dedicato ai "tecnicismi" nella sintassi di Go – e la sua natura pragmatica. Questi i motivi che portano a credere che, nel giro di qualche anno, il linguaggio di programmazione di Google possa insediare le posizioni di vertice e battere i vari Python o Java sul fronte della facilità e immediatezza d'uso.




Il linguaggio Go e la mascotte



Che cos'è Go

Nato dalla mente di Robert Griesemer, Rob Pike e Ken Thompson, Go è un linguaggio di programmazione open source pensato per realizzare applicativi e software multipiattaforma. Volendo scendere nel dettaglio, potremmo dire che Golang è un linguaggio compilato e a tipizzazione statica e allo stesso tempo facile da leggere (quindi di alto livello), che si inserisce nel solco tracciato da altri linguaggi come C o Algol. Tra le altre caratteristiche di Golang si segnalano la garbage collection, la tipizzazione strutturata limitata e funzionalità di memory safety.

Ad onor del vero, si tratta di una combinazione di funzioni e caratteristiche che è possibile ritrovare anche in altri linguaggi. Ciò che rendere speciale Go, però, è la sua sintassi semplificata, che lo rende particolarmente immediato e intuitivo da apprendere. I tre ingegneri Google, infatti, erano alla ricerca di un linguaggio che avesse le funzionalità e la potenza di C++, ma che allo stesso tempo eliminasse tutti gli "eccessi stilistici" di quel linguaggio. Muovendo da questa precisa necessità, Robert Griesemer, Rob Pike e Ken Thompson creano Golang e iniziano a utilizzarlo per realizzare alcuni applicativi utilizzati nelle segrete stanze di Big G.





Funzionamento e sintassi di Go

Viste le ragioni che hanno portato alla sua genesi, è facile predire che la sintassi di Golang sia estremamente intuitiva e semplice da "maneggiare". Ed è effettivamente così. A differenza dei vari C e C++, dai quali prende comunque le mosse, Go adotta schemi di programmazione più consoni a un linguaggio dinamico anziché statico. L'obiettivo di questa scelta, come detto, è di rendere il codice sorgente più possibile conciso e "leggibile" (comprensibile). In fase di scrittura del codice, ad esempio, l'utilizzo di operatori combinati evita che il programmatore debba specificare la tipologia di variabile (stringa alfanumerica, numero intero e così via) che sta per utilizzare. Una stringa di codice "i := 3" equivale alla stringa "int i = 3" scritta in C.

Non mancano poi i tipi (numerici come byte, int64, float32 e così via; booleani e caratteri), così come la gestione e il rimando a librerie e pacchetti esterni (che possono essere richiamati all'interno del codice con la funzione "go get").





Possibili applicazioni di Golang


Questa struttura semplificata rende Golang particolarmente adatto alla realizzazione di determinate tipologie di software. Go, ad esempio, è ampiamente utilizzato per la creazione di applicativi web o per la gestione di server. Rientrano all'interno di questo settore API e framework minimali per applicazioni web in genere. Non avendo grandi problemi nel "girare" su diverse piattaforme operative, Go può essere utilizzato anche per realizzare applicativi ed eseguibili stand-alone, cioè in grado di funzionare autonomamente e senza che sia necessario ricorrere a dipendenze e librerie esterne (con Python, ad esempio, è necessario avere una copia del compilatore per far girare script e applicativi sul proprio PC; con Go sarà sufficiente l'eseguibile creato anche su un altro computer).

Visti gli utilizzi appena descritti, non ci si dovrà sorprendere se, al momento, quasi nessuno ha pensato a realizzare delle librerie che dotino gli applicativi realizzati in Go di un'interfaccia utente accattivante e di facile utilizzo. Per questo motivo Golang è poco indicato nel caso in cui il proprio progetto preveda la realizzazione di software dotati di una GUI accattivante e bella da vedere.


Link originale: https://www.fastweb.it/internet/come-funziona-go-linguaggio-programmazione/

Copyright CULTUR-E


LINK PER INSTALLARE GO: https://golang.org/doc/install

Il progetto https://golang.org/

Compilatore On Line di Golang

https://www.tutorialspoint.com/execute_golang_online.php





MANUALE LINGUAGGIO GO: http://tesi.cab.unipd.it/33111/1/Tesina_562011.pdf

Go by Example

Go is an open source programming language designed for building simple, fast, and reliable software.

Go by Example is a hands-on introduction to Go using annotated example programs. Check out the first example or browse the full list below.
Hello World
Values
Variables
Constants
For
If/Else
Switch
Arrays
Slices
Maps
Range
Functions
Multiple Return Values
Variadic Functions
Closures
Recursion
Pointers
Structs
Methods
Interfaces
Errors
Goroutines
Channels
Channel Buffering
Channel Synchronization
Channel Directions
Select
Timeouts
Non-Blocking Channel Operations
Closing Channels
Range over Channels
Timers
Tickers
Worker Pools
Rate Limiting
Atomic Counters
Mutexes
Stateful Goroutines
Sorting
Sorting by Functions
Panic
Defer
Collection Functions
String Functions
String Formatting
Regular Expressions
JSON
Time
Epoch
Time Formatting / Parsing
Random Numbers
Number Parsing
URL Parsing
SHA1 Hashes
Base64 Encoding
Reading Files
Writing Files
Line Filters
Command-Line Arguments
Command-Line Flags
Environment Variables
Spawning Processes
Exec'ing Processes
Signals
Exit

by @mmcgrana | feedback | source | license

Commenti

Post popolari in questo blog

Esercizi sulla rappresentazione della virgola mobile IEEE 754 (Floating Point)

SubnetMask: come funzionano e come si calcolano le sottoreti

Simulazioni di reti (con Cisco Packet Tracer)