Alfonso Maruccia

Google Go è 1.0

Il nuovo linguaggio di programmazione voluto da BigG raggiunge la sua prima "major" release. Tante le novità tecniche. Unico neo: la mancanza di interesse degli sviluppatori a due anni dal debutto

Roma - Go, il linguaggio di programmazione cucinato da Google nel 2009 come alternativa alla complessità raggiunta in questi anni dagli ambienti di sviluppo più popolari, si è appena "laureato" con la distribuzione della versione 1.0 di specifiche e toolkit. Importanti le novità della release, mentre i programmatori continuano a snobbare il nuovo linguaggio.

Go 1.0 comprende miglioramenti lato programmazione (nuove tipologie di errori e caratteri Unicode), per le librerie standard, una migliore e più coerente organizzazione gerarchica dei vari componenti del linguaggio (i pacchetti networking ricollocati come sottodirectory della cartella "net") e via elencando.

Un'altra importante novità introdotta dai Googlers è un aumentato livello di compatibilità dei listati di codice sorgente: il codice creato secondo le specifiche Go 1.0, promette Google, continuerà a funzionare senza problemi almeno fino alla prossima major release (Go 2.0).
Go cresce e matura, ma a latitare è sempre l'interesse degli sviluppatori operanti fuori dalle mura del Googleplex: la più recente edizione dell'indice TIOBE (marzo 2012) posiziona Go tra il 51esimo e il 100esimo posto nella classifica dei linguaggi di programmazione più popolari, con una percentuale molto al di sotto dello zero virgola percentuale.

Alfonso Maruccia
Notizie collegate
  • TecnologiaGoogle, la programmazione è GoMountain View rende pubblici i suoi esperimenti con un nuovo linguaggio di programmazione, lodandone le qualità velocistiche e chiamando a raccolta sviluppatori esterni per far maturare la piattaforma. Tutto con licenza BSD
12 Commenti alla Notizia Google Go è 1.0
Ordina
  • "il codice creato secondo le specifiche Go 1.0, promette Google, continuerà a funzionare senza problemi almeno fino alla prossima major release "

    Se iniziano a buttare fuori le major releases come fanno con chrome (mi pare siamo arrivati alla 19) i programmatori stanno freschi!
    non+autenticato
  • bah, alla fine il problema non si pone, sono solo numeri

    l'importante è la retrocompatibilità
    non+autenticato
  • - Scritto da: collione
    > bah, alla fine il problema non si pone, sono solo
    > numeri
    >
    > l'importante è la retrocompatibilità

    Appunto, se garantiscono il funzionamento fino alla prossima release, significa che non necessariamente la 2.0 sarà retrocompatibile.
    non+autenticato
  • - Scritto da: Chiao

    > Appunto, se garantiscono il funzionamento fino
    > alla prossima release, significa che non
    > necessariamente la 2.0 sarà
    > retrocompatibile.

    considerando che è un linguaggio di programmazione, possono al massimo aggiungere dei costrutti, migliorare la standard library e modificare qualcosa per rendere l'api più chiara

    la non retrocompatibilità non è molta diffusa nell'ambito dei linguaggi

    l'abi pure non dovrebbe cambiare, visto che è mutuata da gcc, quindi vecchia, testata e ritestata
    non+autenticato
  • Da qualche tempo stò testando l sdk di Go per google_appengine.

    Sembra davvero ben fatto, per non parlare del compilatore e del webserver python based che ricompila i sorgenti in un attimo direttamente ad ogni refresh di pagina.

    A mio avviso: E' perfetto per semplici task web da distribuire ad una larga massa di utenze.

    Senza contare che tramite google_appengine è possibile far girare l'applicazione direttamente nel cloud di google, eliminando gratuitamente di fatto, qualunque neo prestazionale in un ambiente ultraottimizzato per la compilazione specifica.

    Certo, "non è facile" tirare su applicazioni complesse visto l'approccio C-like abbastanza stretto, ed anche con un certo know-how ci vuole del tempo per abituarsi all ambiente. Non è PHP e nemmeno Java, per intenderci.

    Però attraverso le demo è possibile progredire velocemente, ed è Dannatamente veloce!Sorride
    non+autenticato
  • vero, la cosa che mi ha impressionato è la velocità degli eseguibili

    mai, fino ad oggi, un linguaggio nuovo ha avuto un compilatore così ottimizzato

    ma in molti sostengono che in realtà c'è ancora molto spazio per l'ottimizzazione, per cui dovremmo vedere risultati ancora migliori in futuro

    riguardo il C-like, è bene notare che implementa molti costrutti decisamente avanzato, anche se si mantiene relativamente a basso livello

    imho hanno voluto seguire l'approccio apple di implementare un linguaggio a basso livello

    ci sono ovviamente svantaggi, ma la necessità di renderlo il linguaggio ideale per il multithreading e quindi con un occhio di riguardo al throughput, ha impedito di implementarlo come linguaggio ad alto livello

    del resto i costrutti complessi si pagano in termini di performance, ma a coprire questa nicchia c'è dart ( nelle intenzioni di google )
    non+autenticato
  • "riguardo il C-like, è bene notare che implementa molti costrutti decisamente avanzato, anche se si mantiene relativamente a basso livello"

    True Dat.

    Però mi riferivo alla struttura delle directory, alla gestione delle import nella sintassi, in generale, tutti gli accorgimenti tipici del flusso di lavoro di chi sviluppa in C++, semplificati all inverosimile.

    Inoltre guardando la lista dei packages devo dire che sono già ad un ottimo punto.. http://golang.org/pkg/

    Ad esempio c'è già il pacchetto cgi disponibile (e mi viene da azzardare un'alternativa futura al caro vecchio perl) e nell' ambito crypto c'è già praticamente tutto. Sarebbe interessante se qualcuno si prendesse la briga di pacchettizzare il compilatore in una distribuzione linux, o ancora meglio di sviluppare software go based con compilatore e sorgenti pacchettizzati direttamente nelle repo di una distribuzione.

    Inoltre se riuscissero ad ampliare il parco "database" nei packages scrivendo connectors per mysql, postgres e nosql in generale, suppongo che la piattaforma diventerebbe appetibile per qualche test piu approfondito, per quello che riguarda lo sviluppo di applicazioni web.. in accoppiata con le meraviglie di scripting lato client che stiamo vedendo con lo sviluppo di html5, potrebbe promettere molto bene..

    Mi chiedo come si comporterebbe il compilatore in ambito di piattaforme cloud di terze parti, suppongo che il discorso multithreading sia rivolto principalmente per il mondo google appengine, inteso come:
    "Best Performance with Us."

    Vedremo,
    Comunque non posso che apprezzare sempre più il modo di fare di Google,
    La versatilità nel multipiattaforma degli "SDK" che fanno, è davvero unica: vedi sdk per android, sdk per appengine, il paradigma di sviluppo delle estensioni per chrome... etc...

    Letterali "manne dal cielo" a chi piace (o per necessità) si trova a portare avanti piu progetti su piattaforme di sviluppo differenti.
    non+autenticato
  • - Scritto da: XYZ
    > Sarebbe interessante se
    > qualcuno si prendesse la briga di pacchettizzare
    > il compilatore in una distribuzione linux

    http://packages.debian.org/sid/golang-go
    non+autenticato
  • ... è quanto di meno utile per capire la popolarità dei linguaggi. Può dare una mezza idea, ma il suo scopo principale è di alimentare le flame.

    Detto questo, è vero che Go è un po' snobbato, ma non molto più della pletora di linguaggi nati negli ultimi 3-5 anni.
    Sembra che la moda, ultimamente, sia di inventare nuovi linguaggi. E` abbastanza logico che ognuno si perda in mezzo al mare.

    Certo è che Go sembra interessante per il multithread, e non è il solito "nuovo linguaggio dentro la JVM". Personalmente me lo tengo buono, ma mi capita molto raramente di aver bisogno di multithread...

    Bye.
    Shu
    1232
  • > Detto questo, è vero che Go è un po' snobbato, ma
    > non molto più della pletora di linguaggi nati
    > negli ultimi 3-5 anni.

    Secondo me i tempi non sono maturi, ma è normale: Python è nato nel 1991, Ruby nel 1995, ed entrambi sono diventati importanti molti anni dopo.

    > Sembra che la moda, ultimamente, sia di inventare
    > nuovi linguaggi.

    Già, in una VM ha un senso: avere un linguaggio che si adatta in maniera più specifica al tuo problema e ti fa programmare in maniera più rapida può valere l'investimento. Fuori dalla JVM e CLR questo vale meno.

    > Certo è che Go sembra interessante per il
    > multithread, e non è il solito "nuovo linguaggio
    > dentro la JVM".

    Da vedere cosa sa fare meglio di Java e C++.
    Rispetto al C++ direi che del C++ non salvo nulla a parte la velocità, quindi una notazione più civile ed un garbage collection varrebbero la pena.
    Ma rispetto a Java colma quel gap di prestazioni che Java ha in alcuni usi da valere la pena?
    Ancora per fare multithreading Java è già molto meglio del C++: se poi usi Scala o la libreria Akka, go cosa da in più?
    non+autenticato
  • le prestazioni sono in linea col C++

    riguardo il cosa sa fare meglio, la risposta è il multithreading

    go è stato creato esplicitamente per rendere umanamente utilizzabile il multithreading, senza dover per forza impazzire e/o scrivere codice pieni zeppo di errori di sincronizzazione
    non+autenticato