Successivo

News

Go, Google Go

Michele Costabile | 11 Novembre 2009

Un nuovo linguaggio sulla scena, questa volta arriva da Google. Il nome del linguaggio è Go: una troncatura del logo […]

Un nuovo linguaggio sulla scena, questa volta arriva da Google. Il nome del linguaggio è Go: una troncatura del logo aziendale, un verbo in inglese o un gioco da tavolo orientale.
Ci vorrà  un po’ di tempo, che non abbiamo avuto dato che l’annuncio è di ieri, per andare nelle pieghe della sintassi a scoprire quali sono i punti di forza del linguaggio.
Per ora stiamo alla pagina di annuncio che ricapitola le particolarità  del linguaggio:

  • Velocità  perché il compilatore produce codice nativo ottimizzato
  • Sicurezza: il linguaggio, a differenza del C, è controllato strettamente nella tipizzazione e nell’uso della memoria. Ci sono i puntatori, ma non un’aritmetica dei puntatori. Per lavorare con gli array si importa il concetto di slice da Python
  • Concorrenza: la gestione di processi concorrenti viene gestita implementando le coroutine, anzi le goroutine come vengono chiamate nella presentazione
  • Facilità : la gestione della memoria si basa sulla garbage collection e il feeling generale del linguaggio è da linguaggio interpretato, senza le asprezze tipiche del lavoro col compilatore di un linguaggio strettamente tipizzato

Ecco una presentazioen del linguaggio.

[kml_flashembed movie="https://www.youtube.com/v/rKnDgT73v8s" width="425" height="350" wmode="transparent" /]

Con le premesse che ci sono, sembra proprio che i laboratori di Google abbiano preso ispirazione dalle difficoltà  dei programmatori C, dalla lentezza dei linguaggi interpretati e dai limiti di performance delle macchine virtuali in circolazione, come Java e .net.
Go sembra, ovviamente, fortemente orientato alla creazione di servizi ad alte prestazioni, come quelli tipici di una sala macchine aperta sul web.
Per approfondire, ecco un tutorial del linguaggio.
Stiamo a vedere e torniamoci sopra con più calma, per adesso ecco un assaggio del linguaggio:

package main

import fmt "fmt"  // Package implementing formatted I/O.

func main() {
    fmt.Printf("Hello, world; or Καλημέρα κόσμε; or こんにちは 世界\n");
}