LiteIDE: mi IDE preferido para Go

Después de probar y estudiar Go (aka Golang) desde el día que nació sobre el 2009, he vuelto a retomarlo para el desarrollo de pequeños proyectos web/API. Me ha empujado a volver a usarlo la constante mención sobre Go en Hacker News. Raro es el día que no aparece una empresa o start-up que ha empezado a usarlo para bajar la factura de servidores y watios.

En su día analicé algún que otro IDE para Go que estaba interesante.

Lo cierto es que hoy en día Go ha evolucionado mucho y lo mismo ha ocurrido con los IDE asociados.

De entre todos lo que he probado (Goclipse, Go-IDE y LiteIDE) me quedo con LiteIDE.

Las razones son:

  • Cross-platform (GNU/Linux, Windows y Mac OS X)
  • LGPL
  • Modular
  • Sencillo
  • Ligero
  • Integra perfectamente el entorno (algo particular) de Go.

 

Ahora queda empezar a hacer Apps Go-fabulosas 🙂

 

Anuncios

Editores IDE para Go

Google Go Language

Google Go Language

Hoy en la lista de correo de Gogolang-nuts, Rex ha indicado los principales IDE que implementan o tienen resalto de sintáxis.

Este es listado:

Sin duda disponer de un buen IDE es (casi) fundamental para ser productivo.

El hecho de que empieza a existir varios IDEs que implementan Go es una buena señal de que el lenguaje va ganando fuerza.

Charla sobre Go en Betabeers

Charla sobre Go en Betabeers

Charla sobre Go en Betabeers

ACTUALIZACIÓN: Muchas gracias a Betabeers por el fantástico ambiente donde discurrió la charla! Me lo he pasado muy bien y sido una experiencia muy positiva.
Si queréis practicar con Go:

El viernes 25 de Mayo de 2012 daré una charla introductoria a Go, el lenguaje de Google, en Betabeers.

ϐetabeers es un evento para desarrolladores donde se exponen proyectos y/o startups desde un punto de vista técnico o “cómo funciona”.
Antes de la presentación de los proyectos se realiza una charla sobre lenguajes de programación, frameworks o herramientas que ayuden al desarrollo.
Actualmente es un evento mensual en plena expansión.
Ya se celebra en las principales ciudades españolas (Madrid,Barcelona,Valencia,Zaragoza,…) e incluso empieza a ser un evento internacional (Londres y Buenos Aires). La verdad es que tanto el formato como el buen ambiente colaborativo que hay hacen de Betabeers un evento imprescindible (#must).
Olvidaba lo más importante, a parte de la bolsa de trabajo, después de cada evento el networking se hace de forma relajada disfrutando de una buena cerveza 🙂

Go, también conocido como Golang, se trata un lenguaje de programación de muy alto nivel respaldado por Google. Si echáis un vistazo a mi blog veréis algunas entradas sobre este lenguaje.
Es un lenguaje desarrollado inicialmente por Rob Pike, fellow que trabajó en Bell (ahora en Google) desarrollando Plan 9 e Inferno (si miráis el fuente de Go veréis bastantes similitudes en el know-how).
La premisa del lenguaje es sencilla pero ambiciosa: “Go es un lenguaje tan fácil y flexible como lenguajes interpretados como Python, pero muy eficientes debido a que se genera código nativo“.

En la charla no voy a mostrar slides de sintaxis y código. Mi objetivo es conseguir que la audiencia se anime a probar Go y saquen sus propias conclusiones, ¿lo conseguiré?

Si estás por Madrid y estás interesado, en ¡Betabeers nos vemos! Viernes 25 de Mayo 2012 a las 19:00  ( C/ Concepción Jerónima, 22)

GoLang para Windows y CIA

GoLang logo

GoLang logo

No hay nada como liberar un proyecto, para que la Comunidad lo eleve a la máxima exponencia.

Apenas hace un mes que se liberó el proyecto y la cantidad de información y desarrollo que hay alrededor de GoLang es impresionante.

Si recordáis, al poco tiempo de ver la luz GoLang, comenté que no era para Windows.

Pues bien, ya hay (desde hace algunas semanas)  dos “portes” de GoLang para Windows.

No he podido probarlos todavía, pero entiendo que tienen que funcionar con relativa “facilidad” (aun hay sistemas GNU/Linux donde GoLang le cuesta compilar).

Realmente este porting ha sido posible gracias a la versión homóloga de GCC (y su entorno) para Windows, MinGW y el entorno Unix para Windows Cygwin.

También están en fase de desarrollo inicial versiones para FreeBSD y OpenBSD.

Espero que con estos portings el lenguaje llegué a más desarrolladores y poco a poco se convierta en un lenguaje maduro y competente.

Translate to:English
MenefanteMenéame TwitterTwitter

GoLang, portar librerías con Cgo

GoLang logo

GoLang logo

 

Se abre la veda para portar librerías de C a GoLang.

GoLang incluye una especie de procesador de lenguaje (como puede ser rpcgen para RPC), que genera unos “stubs” y “skels” a partir de una especficación (declaraciones de C).  A esta utilidad se le conoce como Cgo. Bajo la ruta $(GOROOT)/misc/cgo se encuentran dos ejemplos claros.

  • stdio: es el “Hola mundo” de Cgo. Sirve para ver cómo funciona el proceso de compilación y empezar a practicar. Hay dos ficheros importantes, “file.go” y “hello.go”.  El fichero que parsea Cgo es “file.go” y en él se implementa un “print(string)“. Como podéis adivinar, “hello.go” utiliza el porting del print implementado en “file.go”.
  • gmp: es el porting del TAD BigNum que implementa la librería GMP. Es un ejemplo más real y práctico de Cgo y enseña bien la sintaxis de uso (aunque es sencilla por sí misma).

La sintaxis de un fichero Cgo es como la de un fichero normal de GoLang. Lo único diferente es la inclusión de:

import "C"

Estas son las palabras mágicas para que Cgo se dé por aludido y empiece a trabajar. Para ello comienza buscando justo en la primera línea anterior a import “comentarios” de C.

En estos comentarios es donde se incluye los tipos de datos, prototipos de función y/o incluso los include en C de la librería que queremos portar.

Si por ejemplo queremos portar la librería D-Bus para GoLang, en nuestro fichero tiene que haber algo parecido a:

/*#include <dbus/dbus.h>

*/
import "C"

Para poder usar los tipos y funciones que ofrece D-Bus sólo tendríamos que establecer el prefijo “C.” al tipo o función en cuestión.

Si en D-Bus existe el tipo “dbus_bool_t” y queremos declarar una variable de ese tipo, la sentencia seria algo como: “var miBool C.dbus_bool_t“.

Por último queda el detalle de la conversión de tipos entre C y GoLang. Para esto existe funciones proporcionadas por la librería de Cgo que permite este tipo de “casting”. Por ejemplo, “CString(cad string) unsafe.Pointer” nos devuelve el archiconocido puntero “char*”.

Una vez que tengamos nuestro archivo Go con el porting de nuestra librería favorita hecho, es necesario generar el paquete. Basta con copiar el Makefile de “gmp”, cambiar el nombre del componente y de los ficheros GoLang asociados.

Lo primero que hará make será parsear con Cgo nuestro fichero de porting. Esto genera unos ficheros que serán compilados con Go y otros que serán compilados con GCC, creando una librería dinámica “.so” que será cargada y usada por el ejecutable que generemos cuando usemos nuestra aplicación.

Lo cierto es que la utilidad Cgo es necesaría para difundir y extender el lenguaje, ya que permite que terceras partes generen muchos portings de librerías enriqueciendo así el framework.

A día de hoy ya existen muchos proyectos de porting de diferentes librerías para gestores de base de datos y creación de ventanas X Windows.

Espero que os animéis a portar librerías 🙂

P.D. Cgo al igual que GoLang se encuentran en pañales, es muy probable que encontréis algun bug, en el parseo. Por favor, reportadlo.

Translate to:English
MenefanteMenéame TwitterTwitter

[Tip] GoLang, compilador online

GoLang logo

GoLang logo

Los chicos de GoLang están haciendo un gran trabajo.

Para aquellos usuarios que usen Windows u otro sistema operativo no soportado por GoLang, han creado una página web donde poder compilar pequeños programas de prueba y ejecutarlo.

Está muy bien para poder experimentar con el lenguaje y su sintaxis directamente sin tener que descargar ni compilar nada.

http://gofmt.com/compile.html

Buena “compilación” 🙂

Translate to:English
MenefanteMenéame TwitterTwitter