Gli sviluppatori di Google non si fermano mai: anche nel tempo libero progettano, analizzano e creano. E, come nel caso del linguaggio di programmazione Go, a volte queste creazioni rientrano in disegni più grandi e diventano delle vere e proprio piattaforme.
Go è il linguaggio di programmazione open source sviluppato a Mountain View. Nato da un'idea di Ken Thompson, Russ Cox, Robert Griesmer e Rob Pike, Go vuole essere un nuovo strumento di sviluppo per semplificare la vita dei programmatori. L'obiettivo dei quattro ricercatori, che hanno curato il progetto inizialmente come hobby, era quello di creare un linguaggio che potesse fornire la sicurezza e la rapidità dei linguaggi compilati come C o C++ e le performance di sviluppo di un linguaggio dinamico come ad esempio Python.
Go è stato rilasciato ufficialmente alla fine del 2009, e attualmente non è disponibile su piattaforme Windows, ma solo su sistemi Unix-based (Unix, Mac OSX, BSD). Il sito ufficiale per ora è praticamente l'unica risorsa disponibile per avere informazioni più specifiche circa le caratteristiche e il funzionamento base di questa nuova tecnologia.
Anche se non ci sono precise istruzioni da parte di Google, sembra che Go si presti molto bene come strumento di sviluppo per software di sistema come web server e sistemi di storage. Go ha ereditato moltissime caratteristiche del C, del Pascal, di Oberon, Modula, e molti altri linguaggi ancora; bisogna però ammettere che i giudizi finora riscontrati sono molto contrastanti. In alcune situazione Go si comporta molto bene, risultando chiaro ed intuitivo: ma in altre circostanze il codice diventa troppo illeggibile e poco immediato.
Attualmente vi sono diverse librerie disponibili, come ad esempio quelle per la gestione delle espressioni regolari, dei file, dell'I/O, delle stringhe, delle operazioni matematiche, e il numero è in costante crescita.
I tipi di dato predefiniti invece sono: Map (le hash table), Channels (mezzo di comunicazione tra funzioni concorrenti), String, Array, Boolean, Numeric, Slice, Pointer, Struct, Function ed Interface. Le costanti possono essere definitite anche senza specificare un tipo, non esistono le enumerazioni e l'erediterietà non è supportata.
Questo sembra essere uno degli argomenti più discussi visto che l'ereditarietà è considerata una caratteristica fondamentale di ogni linguaggio di programmazione Object-Oriented. Per la gestione degli oggetti Go utilizza le interfacce, implementando un meccanismo che ricorda le classi astratte del C++.
Go è questo e molto altro ancora: sicuramente sono state fatte scelte discutibili che lasciano non poche perplessità , ma nella maggior parte dei casi tutto cià che passa da Mountain View si trasforma in oro...dunque è plausibile che Go raggiunga presto un livello di maturità interessante.
Per chi volesse saperne di più, il sito ufficiale è disponibile all'indirizzo http://golang.org/.