Programar con Go en Ubuntu

Go es el nuevo lenguaje de programación de Google, un lenguaje que intenta combinar la rapidez de desarrollo de Python con el rendimiento de C y que además es open source, distribuido bajo una licencia tipo BSD. ¿Suena bien? Pues vamos a compilar sus herramientas para poder jugar un poco con él.

Primero necesitamos crear algunas variables de entorno en nuestro .bashrc. Abrimos el archivo con gedit, por ejemplo

gedit ~/.bashrc


y añadimos las siguientes líneas, modificadas según nuestras necesidades y preferencias:

export GOROOT=$HOME/go
export GOOS=linux
export GOARCH=386
export GOBIN=$HOME/bin
export PATH=$PATH:$GOBIN

GOROOT, la primera variable de entorno, indica dónde se guardará el código fuente de Go. GOOS es el sistema operativo para el que vamos a crear nuestras aplicaciones, las opciones son linux, darwin (Mac OS X) y nacl (Native Client, para el navegador Google Chrome). Las opciones para GOARCH, la arquitectura para la que compilamos, son amd64 (64 bits), 386 (32 bits) y arm. Por último, la variable de entorno GOBIN especifica dónde instalaremos los binarios de Go. También modificamos la variable de entorno PATH, añadiendo el directorio en el que se instalarán las herramientas de Go, de forma que podamos ejecutarlas escribiendo su nombre, sin especificar la ruta completa.

Una vez modificado .bashrc, aplicamos los cambios, para no tener que reiniciar la consola

source ~/.bashrc

Pasamos a descargar el código fuente. Para ello primero necesitaremos instalar el cliente del sistema de control de versiones que utilizan, Mercurial

sudo aptitude install mercurial

Una vez hecho esto podemos descargar el código fuente utilizando el comando

hg clone -r release https://go.googlecode.com/hg/ $GOROOT

Una vez tenemos el código fuente, el siguiente paso es compilarlo. Para ello necesitaremos instalar varias herramientas

sudo aptitude install bison gcc libc6-dev ed

Una vez hecho esto, pasamos a compilar

mkdir $GOBIN
cd $GOROOT/src
./all.bash

Cuando el proceso termine, si no se ha producido ningún error, encontraremos las herramientas necesarias para compilar nuestras aplicaciones escritas en Go en el directorio que indicamos para la variable de entorno GOBIN.

A modo de prueba utilizaremos el típico “Hola Mundo”. Creamos un nuevo archivo hola.go con gedit, y escribimos el siguiente código

package main

import "fmt"

func main() {
    fmt.Printf("Hola mundo\n");
}

Guardamos el archivo y lo compilamos

8g hola.go

Si queremos compilar para 64 bits, usaremos el compilador 6g

6g hola.go

El resultado será un archivo objeto hola.6 u hola.8, con el código máquina de nuestra aplicación. Para crear un ejecutable necesitaremos un último paso, que consiste en enlazar la aplicación, mediante el comando 8l (6l para 64 bits)

8l hola.8

Para ejecutar nuestra aplicación, por último:

./8.out



Comentarios
  1. daniel

    No tenia conocimiento sobre este nuevo lenguaje de programacion, hace cuanto aparecio?.

    Pero bueno mientras sea parecido a C, o mejor aun a C++, adaptarse para un programador en java no sera tan dificil.

    Saludos

    Responder

    • Lo anunciaron hace unas horas 😉

      De hecho todavía no está muy claro que no vayan a tener que cambiar de nombre, porque ya existe un lenguaje de programación llamado Go!

      Responder

  2. Sí que tiene buena pinta. OO, con una función main… ¿La salida es un ELF normal, no?

    Responder

    • ~$ file 8.out
      8.out: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), stripped

      Responder

  3. Zemu

    Curioso lenguaje, espero que salga documentación extendida y podamos probar como de bueno es. Lo malo es que no usa punto y coma al final de cada instrucción, con lo fan que soy de usarlo.

    Responder

    • Sí se utilizan, pero como sirven para separar instrucciones no es necesario en la última instrucción. Mejor edito, por claridad.

      Responder

  4. Siendo Google y viendo la gente que trabaja en el lenguaje, parece como que tiene un gran futuro.

    Ahora, a mí no me convence. No es un lenguaje orientado a objetos realmente. Han quitado muchas cosas, dicen que para simplificar.

    Cuando salgan librerías para Go, deje de ser experimental,… se verá de verdad.

    Yo de momento sigo apostanto por Vala, que puede que no tenga por detrás a gente tan importante, pero me convence más.

    ¿Qué os parece?

    Responder

    • Pues que tienes razón: por ahora no pasa de experimento. Pero Google y Ken Thompson… son palabras mayores. Habrá que seguirle la pista, y jugar un poco con él mientras vemos cómo madura.

      Responder

  5. Que bien me hubiera venido esta entrada si la hubiera leído 40 minutos antes para el tema de la definición de las variables, que no recordaba como hacerlo y al buscar en Google entradas sobre Go Programming Language solo encontraba noticias sobre que habían anunciado el lenguaje y demás.

    Muchas gracias de todas formas, ahora voy a intentar probar un Hola Mundo y quizás me atreva con algo más complicado si consigo descifrar la documentación de la página oficial.

    Responder

  6. Uff acabo de probar con el Hola Mundo y he tenido un problema en la importación de fmt (o eso creo).

    En la documentación oficial pone el import entre comillas dobles y me estaba dando un problema.

    ¿Habías probado con import fmt y te ha funcionado?

    El compilador todavía tiene que ser depurado, porque lo errores ni se especifican correctamente qué pueden ser, ni dónde pueden ser
    Aunque yo se que es difícil bajo ciertas condiciones (me hice un traductor Java-C# para una asignatura de la universidad y uno de las cosas que más me costó fue el tratamiento y control de errores sintácticos-semánticos, de hecho hubo partes que las deje por imposible, reportando error genérico, jeje).

    Un saludo.

    Responder

    • Es con comillas, claro. Mea culpa. No sé qué leches he hecho para que se “perdieran” 😛

      Responder

  7. daniel

    En lo personal creo que el lenguaje de programacion de Google, al igual que su sistema operativo tienen mucho futuro.

    Si no observen lo que paso con Chrome navegador, muchos usuarios IE se han cambiando, incluso usuarios Firefox.

    Tal vez se deba a que Google cuenta con un gran presupuesto y su equipo de trabajo lo forman informaticos calificados. Para muchos Google es un monopolio, yo no lo veo asi pero cada quien con su punto de vista.

    Un saludo.

    Responder

  8. goog

    go en pocas palabras c +concurrencia+GC+rendimiento=go
    pero si google puede desarrollar un gran numero de bibliotecas y un compilador muy potente podra reemplazar a c y c++ en entornos multihilo.
    c y c++ no son nada bueno en multihilo .
    go=c 2009

    Responder

  9. Pues la verdad esta claro que Google repercusión si que consigue; ¿qué es de Google Wave? La verdad yo no lo veo tan útil cómo lo decían, tal vez sea que se están metiendo en el futuro y en conceptos que todavía no estoy acostumbrado.

    ¿Go? Pues según he podido leer en algunos blogs el lenguaje D debe de ser bastante mejor, pero todos sabemos que no siempre triunfa lo mejor, sino lo que mejor se vende. Por ahora Go no es que me llame demasiado, dónde este el C a bajo nivel que se quite lo demás.

    Responder

  10. En este articulo dice que el lenguaje Go ya existía hace mucho tiempo

    Google tendrá que cambiarle el nombre.

    Responder

  11. byoms23

    a la me parece muy buena la propuesta de Google de crear un nuevo lenguaje que permita las bondades de python junto con las de c.

    btw @goog muy bueno: go = c v2009

    Responder

  12. ¿Nadie tuvo problemas al instalarlo?, yo sí, este:

    FAIL: net.TestDialGoogle

    ¿Alguna idea?

    Responder

    • Realicé 2 veces la instalación. la primera vez con una conexión lenta a Inet me dio un fallo de TestDialGoogle.
      Me conecte con otra conexión más rápida y pude instalar sin fallos.

      salu2

      Responder

    • Creo que da ese error porque no tenías conexión a Internet en ese momento. ¿Quizás un microcorte?

      Responder

      • Si tenía conexión a internet, lo he intentado varias veces, siempre el mismo test falla :/

        Responder

  13. ¿Ya hay aplicaciones con su código fuente?

    Responder

  14. Go no es C, de hecho apenas se parece excepto en cuatro cosas. Como comentaban en Menéame, parece que es un hijo de C++ y Python.

    Para mi su sintaxis es un poco rara. Por ejemplo, tiene dos tipos de asignación: “=” y “:=” dependiendo de si es asignación o inicialización.

    Además, no es orientado a objetos puro y le faltan unas cuantas características. Los chicos que lo han creado han expuesto sus razones, pero no se yo…

    Lo bueno (muy bueno, diría yo) es la solución para la comunicación entre “goroutines”, algo así como procesos paralelos. Es una buena solución incluida dentro de lenguaje. Eso sí, nada que no se pueda implementar en otro lenguaje.

    Viniendo de Google supongo que tendrá éxito, pero a priori a mi no me gusta.

    Responder

    • A mí me gusta mucho más la sintaxis de Python, pero bueno, cuestión de gustos.

      Responder

  15. Genial resumen, acabo de hacer mi primer hola mundo.
    Es un lenguaje al que tendremos que seguirle el hilo viniendo del monstruo del que viene… quien sabe si dentro de unos años todos trabajamos para Google 🙂

    Responder

  16. […] Los pasos necesarios que hay que realizar para poder programar, compilar y enlazar código en Go sobre Mac OS X son los siguientes (que no son más que una explicación algo más extendida y específica para Mac de la página de información en golang). Si buscáis un manual sobre cómo hacer lo mismo pero sobre Ubuntu, os recomiendo este de MundoGeek. […]

    Responder

  17. Manuel

    Se ve que google no descansa, pero no seria mejorar python y todo lo que tiene?.
    Python me parece muy bueno y ya tiene soporte para interfaces como wxWidgets, lo unico en lo cual falla es en la velocidad. Falta ver como evoluciona este nuevo lenguaje y que posibilidades de mejora puede mostrar con respecto a otros lenguajes como C, Java o Python.

    Responder

  18. […] mañana me encuentro en MundoGeek un artículo acerca del reciente lenguaje de programación Go, del que ya hablamos ayer. Me ha […]

    Responder

  19. […] Para más información visitar la web The Go Programming Language que han creado. Además, si queréis empezar a jugar con él, hay un buen tutorial de como empezar en Mundo geek. […]

    Responder

  20. Si no sólo es un lenguaje, ahora google propone un protocolo SPDY.
    Cada vez me dan más miedo estos de G00gle…

    Responder

  21. matyvico

    Buenas, queria comentarles que lo instale, no tube ningun tipo de problema, hice la prueba del “hola mundo” y anduvo perfecto! ahora bien, (es una pregunta tonta, lo se) como se cuales son las instrucciones contempladas dentro de cada paquete?? son las mismas que usabamos en c o c++?? muchas gracias!

    Responder

  22. Que tal, me podrias ayudar con esto?
    me da este error en este paso “./all.bash”

    — FAIL: net.TestDialGoogle
    — 74.125.19.99:80 —
    http://www.google.com:80
    Dial(“tcp4”, “”, “www.google.com:80”) = _, dial tcp4 http://www.google.com:80: lookup http://www.google.com. on 192.168.1.254:53: no answer from server
    Dial(“tcp4”, “”, “www.google.com:80”) = _, dial tcp4 http://www.google.com:80: lookup http://www.google.com. on 192.168.1.254:53: no answer from server
    — 74.125.19.99:http —
    http://www.google.com:http
    Dial(“tcp”, “”, “www.google.com:http”) = _, dial tcp http://www.google.com:http: lookup http://www.google.com. on 192.168.1.254:53: no answer from server
    Dial(“tcp4”, “”, “www.google.com:http”) = _, dial tcp4 http://www.google.com:http: lookup http://www.google.com. on 192.168.1.254:53: no answer from server
    Dial(“tcp6”, “”, “www.google.com:http”) = _, dial tcp6 http://www.google.com:http: lookup http://www.google.com. on 192.168.1.254:53: no answer from server
    — 074.125.019.099:0080 —
    — [::ffff:74.125.19.99]:80 —
    — [::ffff:4a7d:1363]:80 —
    — [0:0:0:0:0000:ffff:74.125.19.99]:80 —
    — [0:0:0:0:000000:ffff:74.125.19.99]:80 —
    — [0:0:0:0:0:ffff::74.125.19.99]:80 —
    FAIL
    make[1]: *** [test] Error 1
    make[1]: se sale del directorio `/home/chopan/go_src/src/pkg/net’
    make: *** [net.test] Error 2

    Responder

  23. […] MundoGeek, Go Programming […]

    Responder

  24. Chikitulfo

    Acabarán dominándonos a todos… Ya lo veréis…

    😀
    Muy interesante la verdad. Como dice la gente: habrá que seguirle la pista

    Responder

  25. Miguel

    Uhm como podria deshacer los cambios hechos… no tengo mucha experiencia en linux y me gustaria saber como revertir por si no me gusta

    Responder

    • Sólo tendrías que borrar la carpeta con el código fuente y los binarios de Go, editar el .bashrc para eliminar las variables indicadas, y desinstalar los paquetes que instalaste con sudo aptitude purge

      Responder

  26. […] es un post muy interesante que encontré en Mundo Geek en el cual no muestran el proceso de cómo instalar el compilador de Go el nuevo lenguaje de […]

    Responder

  27. […] PDRTJS_settings_176341_post_4176 = { "id" : "176341", "unique_id" : "wp-post-4176", "title" : "Instalaci%C3%B3n+en+Ubuntu+de+Go%3A+El+nuevo+lenguaje+de+programaci%C3%B3n+de+Google", "item_id" : "_post_4176", "permalink" : "http%3A%2F%2Fbioinformatiquillo.wordpress.com%2F2009%2F11%2F15%2Finstalacion-en-ubuntu-de-go-el-nuevo-lenguaje-de-programacion-de-google%2F" } Fuente: MundoGeek […]

    Responder

  28. […] Programar con Go en Ubuntu – Mundo Geek […]

    Responder

  29. […] de Go, de momento, sólo está disponible para Linux y Mac OS X. Si quieres probarlo en Ubuntu, aquí tienes como instalarlo y compilar tu primer aplicación en Go. No olvides dejarnos tus […]

    Responder

  30. […] “Hola Mundo”. Creamos un nuevo archivo hola.go con gedit, y escribimos el siguiente código view plaincopy to […]

    Responder

  31. […] en primer lugar como instalarlo en Ubuntu. El detalle completo de la instalacion lo podeis ver en MundoGeek, yo ire algo mas […]

    Responder

  32. Tiene buena pinta, y es lógico este movimiento por parte de Google. Con Chrome OS pronto a ver luz, ya se aseguran un lenguaje propio para desarrollar su plataforma(nacl).

    Responder

  33. […] han empezado a surgir tutoriales sobre el uso y desarrollo de este lenguaje, entre las desventajas que puede presentar es no hay […]

    Responder

  34. […] 11: Google presenta su nuevo lenguaje de programación: Go […]

    Responder

  35. […] pues en Mundo Geek han escrito una guia muy interesante donde podemos ver los pasos necesarios para su instalación en […]

    Responder

  36. Calitos

    Como podria hacer que pida 2 numeros enteros y los sume????…

    Responder

Deja un comentario