Go (linguaggio di programmazione)
Go linguaggio di programmazione | |
---|---|
Autore | Google (azienda) |
Data di origine | 10 Novembre 2009 |
Ultima versione | 1.23.3 (6 novembre 2024) |
Utilizzo | Generico |
Paradigmi | Multi paradigma: programmazione concorrente, programmazione strutturata, programmazione imperativa. |
Tipizzazione | Statica, Fortemente Tipizzata |
Estensioni comuni | .go |
Influenzato da | C, Limbo, Modula, Newsqueak, Oberon, Pascal, Python |
Ha influenzato | Crystal, Zig |
Implementazione di riferimento | |
Licenza | licenza BSD |
Sito web | go.dev |
Go è un linguaggio di programmazione ad alto livello compilato e tipizzato staticamente, progettato da Robert Griesemer, Rob Pike e Ken Thompson presso Google. È sintatticamente simile al C, ma dispone anche della memory safety, garbage collection, tipizzazione strutturale e concurrency in stile CSP. Spesso ci si riferisce a lui come a Golang a causa del suo precedente nome di dominio, golang.org
, ma il suo nome corretto è Go.
Esistono due implementazioni principali:
- La toolchain del compilatore "gc" di Google, self-hosting, destinata a più sistemi operativi e WebAssembly.
- gofrontend, un frontend per altri compilatori, con la libreria libgo. Con GCC la combinazione è gccgo; con LLVM la combinazione è gollvm.
Un compilatore source-to-source di terze parti, GopherJS, compila Go in JavaScript per lo sviluppo web front-end.
Storia
[modifica | modifica wikitesto]Go è stato progettato da Google nel 2007 per migliorare la produttività nella programmazione in un'era di macchine multicore, connesse in rete e con ampie basi di codice. I progettisti volevano affrontare le critiche rivolte ad altri linguaggi in uso a Google, mantenendo però le loro caratteristiche utili:
- Tipizzazione statica ed efficienza in fase di esecuzione (come il C)
- Leggibilità e usabilità (come Python)
- Reti ad alte prestazioni e multiprocessing
I progettisti erano principalmente motivati dalla loro comune avversione per il C++.
Go è stato annunciato pubblicamente nel novembre 2009 e la versione 1.0 è stata rilasciata nel marzo 2012. Go è ampiamente utilizzato in produzione presso Google e in molte altre organizzazioni e progetti open-source.
Branding e stile
[modifica | modifica wikitesto]La mascotte Gopher è stata introdotta nel 2009 per il lancio open-source del linguaggio. Il design, realizzato da Renée French, è stato ispirato da una promozione del WFMU risalente al 2000.
Nel novembre 2016, i caratteri tipografici Go e Go Mono sono stati rilasciati dai designer Charles Bigelow e Kris Holmes, appositamente per il progetto Go. Go è un sans-serif umanista simile al Lucida Grande, mentre Go Mono è monospaziato. Entrambi i font aderiscono al set di caratteri WGL4 e sono stati progettati per essere leggibili, con una grande altezza-x e forme delle lettere distintive. Sia Go che Go Mono rispettano lo standard DIN 1450, includendo uno zero barrato, una l
minuscola con una coda e una I
maiuscola con serif.
Nell'aprile 2018, il logo originale è stato ridisegnato dal designer di marchi Adam Smith. Il nuovo logo è un moderno e stilizzato "GO" inclinato verso destra con linee aerodinamiche che lo seguono. La mascotte del Gopher è rimasta la stessa.
Caratteristiche principali
[modifica | modifica wikitesto]Go soddisfa le esigenze della programmazione concorrente ed è stato progettato per ottimizzare i tempi di compilazione anche per hardware modesti. La sintassi è vicina al C eccetto per la dichiarazione dei tipi e per la mancanza di parentesi tonde nei costrutti for e if. Ha un sistema di garbage collection che si occupa autonomamente della gestione della memoria. Non include l'intercettazione di eccezioni, l'eredità dei tipi, le asserzioni e l'overloading dei metodi.
Esempio
[modifica | modifica wikitesto]Hello World in Go:
package main
import "fmt"
func main() {
fmt.Printf("Hello, World")
}
Note
[modifica | modifica wikitesto]
Altri progetti
[modifica | modifica wikitesto]- Wikimedia Commons contiene immagini o altri file su Go
Collegamenti esterni
[modifica | modifica wikitesto]- (EN) Sito ufficiale, su go.dev.
- (EN) Nick Tabor, Go, su Enciclopedia Britannica, Encyclopædia Britannica, Inc.
- (EN) Go, su GitHub.
- Sito di segnalazione bug, su go-review.googlesource.com.
- Sito di risorse dedicate a Go, su go-lang.cat-v.org.
Controllo di autorità | LCCN (EN) sh2012000746 · GND (DE) 7725033-3 · J9U (EN, HE) 987007581576905171 |
---|