secciones

Lenguaje Go

Como decía el otro día, estuve dedicándole unas cuantas noches al lenguage Go. Es un lenguaje de programación creado por Robert Griesemer, Rob Pike, y Ken Thompson (sí, los Rob Pike y Ken Thompson creadores junto a otros de Unix, UTF-8 y mil cosas más). Es un proyecto open source desarrollado inicialmente en Google y Google sigue siendo en la actualidad su principal impulsor y contribuidor.

Go la mascota

Como lenguaje, Go prima un estilo de programación procedural. Lo podríamos considerar de nivel intermedio/bajo. Pretende ser algo así como el C del siglo XXI y su sintaxis se asemeja a la de C, aunque se ha simplificado en muchos aspectos, eliminando por ejemplo la aritmética de punteros (existen los punteros, pero no podemos operar con ellos) y en general tiene una sintaxis más limpia. Se le han añadido también características “modernas” como puede ser un sistema de build rápido, un sistema de paquetes robusto (para evitar colisión de nombres), recolector de basura, etc.

Una característica que puede resultar interesante es que los programas compilados no requieren de máquina virtual, se obtiene un binario ejecutable directamente. De hecho, por defecto dicho binario está estáticamente linkado, por lo que no tiene ninguna dependencia externa de las librerías usadas para su compilado.

Está disponible para varias plataformas oficialmente: Linux, FreeBSD, Windows y Mac OS X. Para otras plataformas se puede compilar a partir de los fuentes o se puede usar la herramienta alternativa gccgo, que es un frontend para el compilardor GCC (de tal manera que la tarea de generar el binario se deja en manos de GCC).

Una cosa interesante a la hora de empezar con el lenguaje es que existe una herramienta online que nos permite escribir programas en Go y ejecutarlo directamente: Go playground. Aunque es evidente que algunas cosas no se pueden probar aquí (es un entorno sandboxed), nos puede servir para hacernos una idea del lenguaje sin tener que instalarlo. De hecho, es una práctica de la comunidad compartir código, dudas, etc, mediante enlaces a programas en el Playground.

Lo básico para empezar con Go es hacer A tour of Go, un tutorial bastante completo que utiliza el Playground para los ejemplos de código y los ejercicios. Esto es lo que yo hice. Además, desde el propio tutorial enlazan a artículos para poder profundizar en algunos temas.

Por cierto, los creadores del lenguaje no fueron muy avispados con el nombre. Como termino de búsqueda en google, Go es demasiado genérico (aparte de que existe un juego de mesa de origen chino con el mismo nombre). De hecho, es mejor utilizar el termino Golang en lugar de Go cuando buscamos en Google.

6 Comentarios
Jokin
Jokin
8 marzo 2015, 15:56 — #1

Una alegría (y todo un acicate) verte retomar la periodicidad ;)

Sigo tu serie de artículos sobre Go convencido de que tomaba el nombre del juego, no de un castor (gopher) y has conseguido picarme la curiosidad. Sin embargo, me quedan dos recelos.
El primero, prejuicio de “veterano” en informática, que me hace pensar que es mejor conocer la evolución que subirse directamente al tren en marcha. Eso me llevaría a aprender C, luego C++ y por último Go para entender mejor la “gramática” del lenguaje.
Y el segundo, debido a la ignorancia, me lleva a preguntar para qué es mejor usar Go antes que otro lenguaje.

Programar siempre ha sido uno de mis propósitos recurrentes cada Año Nuevo, pero cada vez tengo menos tiempo disponible para dedicarlo a estudiar… ¿Por qué debería aprender Go en vez de jugar al 0h h1? ;)

Juanjo Navarro
9 marzo 2015, 06:38 — #2

Gracias, Jokin.

Para mi también es una alegría volver a leerte por aquí (y cuando escribes en tu weblog).

Como lenguaje Go se está usando sobre todo para temas de sistemas/comunicaciones (Docker, que es un sistema de virtualización para hosting que está muy de moda, está escrito en Go). Poco a poco se van desarrollando librerías que lo hacen más apto para otros temas, pero creo que por ahora es su principal ámbito.

Yo de C y C++ realmente no me preocuparía, por lo menos no lo veo como un requisito para aprender Go. Go está basado en la sintaxis de C, pero como lo está el 50% de los lenguajes en la actualidad (Java, Javascript) pero
poco más. Realmente el lenguaje funciona distinto.

Se suele decir que Python es un buen lenguaje para empezar con la programación y mi experiencia es que es cierto. Además su ámbito de aplicación está más cercano a la programación “general” con librerías para poder desarrollar para entornos gráficos (Windows, Mac OS X) y en general lo veo más accesible.

Por cierto, no menciones esos juegos “del demonio” (0h h1) que algunos no los conocíamos y ya me has hecho picarme a uno de esos devoradores de tiempo :-)

Jokin
Jokin
9 marzo 2015, 08:43 — #3

Gracias ;)

Por 0h h1 no te preocupes. Cuando decidas que no puedes perder más tiempo con él puedes probar 0h n0, de los mismos desarrolladores :_D

Juanjo Navarro
9 marzo 2015, 09:09 — #4

¡Aghh! X-D (” ¡oh noooo!!!”)

Jesus Perales
11 marzo 2015, 18:01 — #5

Vaya y que pasara con Dart?

Juanjo Navarro
12 marzo 2015, 05:10 — #6

Jesús, en realidad Dart es un lenguaje que entiendo que no está en el mismo nivel.

Dart es un lenguaje de navegador. Viene a cumplir la misma función que Javascript cumple en el navegador. De hecho, para el caso de que el navegador no disponga de máquina virtual de Dart (y en la actualidad ninguno la tiene) el código se puede transformar en Javascript.

Comentarios cerrados para este artículo

Anterior: Dar estilos distintos según el número de elementos sólo con CSS Siguiente: Game programming patterns