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
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
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!
Sí que tiene buena pinta. OO, con una función main… ¿La salida es un ELF normal, no?
~$ file 8.out
8.out: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), stripped
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.
Sí se utilizan, pero como sirven para separar instrucciones no es necesario en la última instrucción. Mejor edito, por claridad.
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?
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.
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.
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.
Es con comillas, claro. Mea culpa. No sé qué leches he hecho para que se «perdieran» 😛
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.
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
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.
En este articulo dice que el lenguaje Go ya existía hace mucho tiempo…
Google tendrá que cambiarle el nombre.
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
¿Nadie tuvo problemas al instalarlo?, yo sí, este:
FAIL: net.TestDialGoogle
¿Alguna idea?
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
Creo que da ese error porque no tenías conexión a Internet en ese momento. ¿Quizás un microcorte?
Si tenía conexión a internet, lo he intentado varias veces, siempre el mismo test falla :/
¿Ya hay aplicaciones con su código fuente?
Alguna sencillita de ejemplo en el directorio tests. Poco más.
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.
A mí me gusta mucho más la sintaxis de Python, pero bueno, cuestión de gustos.
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 🙂
Pingback: neverbyte.net» Blog Archive » Programando en Go en Mac OS X
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.
También están trabajando en mejorar Python. Es un proyecto al que llaman Unladen Swallow ¿Python 5 veces más rápido?
Pingback: Linux Hispano | Google Go sobre Ubuntu
Pingback: Google crea un nuevo lenguaje programación - Go
Si no sólo es un lenguaje, ahora google propone un protocolo SPDY.
Cada vez me dan más miedo estos de G00gle…
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!
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
Pingback: despuesdegoogle » Blog Archive » Cómo instalar Go en Ubuntu
Acabarán dominándonos a todos… Ya lo veréis…
😀
Muy interesante la verdad. Como dice la gente: habrá que seguirle la pista
Uhm como podria deshacer los cambios hechos… no tengo mucha experiencia en linux y me gustaria saber como revertir por si no me gusta
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
Pingback: Programar con Go en Ubuntu | Código Fantasma
Pingback: Instalación en Ubuntu de Go: El nuevo lenguaje de programación de Google « Un Bioinformatiquillo
Pingback: La semana en links #27 | Ubunlog
Pingback: Go, Lenguaje de progamación de Google | Omeyas Web
Pingback: Programar con Go en Ubuntu « INATUX
Pingback: Programando con Go (El lenguaje de Programacion de Google) « Ubuntu Life
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).
Pingback: Lets Go! « Seamos realistas…
Pingback: Recordando el 2009
Pingback: Como instalar Go en Ubuntu « Santiitos's Blog
Como podria hacer que pida 2 numeros enteros y los sume????…