17 gennaio 2012

[Go] Google Go sarà integrato in GCC?

In un messaggio sulla mailing list ufficiale della suite di compilatori GNU, GCC, il ricercatore di Google Ian Taylor ha espresso la propria volontà di integrare il supporto a Go all'interno della versione 4.7 della GNU Compiler Collection, in occasione del rilascio della prima versione stabile del linguaggio, denominata "Go 1".


Attualmente GCC, nato come compilatore C nel 1987 dalla mente di Richard Stallmann, si trova in versione 4.6 e supporta i linguaggi C, C++, Java, Objective-C/C++, Fortran e Ada per una ampia varietà di architetture hardware.

L'integrazione tra il più famoso compilatore open source e Google Go è opera dello stesso Ian Taylor, che ha sviluppato il front-end gccgo, che risulta attualmente supportato ufficialmente dalla versione 4.6 di GCC, senza però esserne parte della release standard.
Da qui l'intenzione manifestata da Taylor di introdurre ufficialmente Google Go nel prossimo rilascio stabile del compilatore, previsto per questo Aprile.

Go, un linguaggio imperativo a tipizzazione forte che eredita in parte la sintassi da quella classica del C, ha ricevuto pareri discordanti dalla sua uscita ufficiale, nel 2009; attualmente è utilizzato stabilmente all'interno di Mountain View "per fare cose reali", a testimonianza di come si sia evoluto velocemente verso qualcosa di realmente usabile.

Pur presentando i costrutti di base praticamente speculari rispetto a quelli "tradizionali" (for, if, switch), Go si discosta dalla maggior parte dei linguaggi tradizionali per essere una sorta di "ibrido" tra vecchio e nuovo, definendosi in maniera pressoché unica nel vasto panorama dei dialetti di programmazione: mischiando funzionalità adatte al lavoro a basso livello con altre ad astrazione più elevata, non presenta classi ma un originale sistema di package e metodi, presenta i puntatori ma nessuna aritmetica dei puntatori, ha un sistema molto basilare di gestione delle eccezioni - mancava del tutto prima dell'introduzione del costrutto panic/recover - e molte altre peculiarità come la mancanza di ereditarietà di tipo in favore di una più forte tipizzazione, o la presenza di alcune strutture dati leggermente più complesse in maniera nativa (mappe e slice).

Gopher, mascotte del linguaggio
Sicuramente uno dei tratti su cui Go punta maggiormente è la programmazione concorrente che viene gestita e descritta tramite l'uso delle goroutine, un costrutto totalmente nuovo che si discosta dai classici thread e processi; fondamentalmente un programma è un insieme di goroutines che vengono eseguite simultaneamente le une rispetto alle altre nello stesso address space.

Parallelamente a tutte queste features quantomeno innovative, motivo dei feedback discordanti ricevuti da Go, il linguaggio porta con sé una velocità di compilazione estremamente elevata anche su hardware datato.

L'insieme di queste caratteristiche fa di Go un linguaggio relativamente maturo e che marcia velocemente verso Go One, la prima release stabile, motivo dell'iniziativa di Taylor per l'integrazione di Go con GCC: anche se non è da questo che si può determinare l'effettiva bontà di un linguaggio di programmazione, se questo passo arrivasse a compimento darebbe un notevole slancio per la diffusione di Go in termini di visibilità, fama e usabilità su architetture tra loro molto diverse (chi ha detto ARM?).

Via | Phoronix

Nessun commento:

Posta un commento