Hace unos días se anunciaba que Google está invirtiendo esfuerzos en crear un nuevo lenguaje de programación Go.
Me temo que en este caso, aunque el lanzamiento cuenta con el peso de Google, no fue muy afortunado en los contenidos. Algunas de las características que se destacan en las publicaciones oficiales pasan desde que soporta concurrencia de forma nativa (no hacía Ada esto hace muuuchos años?) pasando por los paquetes que incluye (math, regexp, rpc) hasta que se puede compilar todo esto en 10 segundos… vamos hombre… seguro que podéis mejorarlo, así parece un anuncio de C cuando daba sus primeros pasitos :D
Los requisitos actuales de las aplicaciones son bastante más complejos que una libreria de expresiones regulares, o soporte RPC… obviamente todos esos paquetes son necesarios, pero no creo que diferencien ni que aporten un valor añadido sobre otros lenguajes o plataformas.
Cuando vas a la página oficial y te pones a indagar un poco en los tutoriales, los 3 dias de slides, el vídeo técnico… encuentras algunas perlas de calidad, como los múltiples valores de retorno, closures, tener tipado fuerte pero con inicialización no explícita
…. vamos como el var s = “”; de C# pero no hace falta ni el var… la versión Go para inicializar variables es s := “”;
y también encuentras patazos, como el retorno de los punteros explícitos o cosas como esta “even if int and int32 are both 32 bits in size, they are not the same type”
De hecho, personalmente he encontrado muchos más patazos que perlas, pero en algún momento entre patazo y perla descubres que Go es un lenguaje ‘experimental’ pensado como lenguaje de sistemas. Concebido para construir software de infraestructura, como servidores web, servicios, etcétera…
acabaaaaramos… un lenguaje experimental, ok, como los cientos de idas de olla que podemos encontrar en http://research.microsoft.com/ Son proyectos de investigación que puede que algún día complementen a algún producto, o que puede que se queden en el camino. Pero nada que ver con un producto real. Una vez sabido ésto hay que entenderlo dentro del contexto en el que juega, sin compararlo a otros lenguajes que ya han probado su eficacia y están ampliamente adoptados.
Tal vez debían haberlo dejado claro antes… porque la prueba de concepto que están haciendo ha derivado en este tipo de comentarios en internet:
Go is an open-source development language that Google believes will combine performance with speed, and one that the company probably hopes will reshape the development and software industries in its favor.
( via http://fivestaraffiliate.com/google-go-new-programming-language/ )
Conclusión
Aún siendo un proyecto de investigación, por ahora, no veo sitio a Go ni he visto en qué areas de investigación está invirtiendo (tal vez la idea de hacer lenguajes específicos de sistemas). Otros proyectos de investigación que se ojean, están orientados a la seguridad, o a la computación paralela. o a lo que sea, pero les ves una dirección clara (os acordáis del poliphonic c# o de c vault? ). Pero por lo poco que he podido ver de Go me parece un C un tanto descafeinado con algunas librerías incluidas por defecto O=)
Reconozco que no le he dedicado más de 3 horas, pero siendo desarrollador y habiendo dedicado ese tiempo, creo que, al menos, me tenía que haber quedado claro el posicionamiento del lenguaje.
Demasiados lenguajes nos pueden diversificar en demasiadas plataformas y me parece más atractiva la opción de hacer crecer un lenguaje existente tanto a nivel de lenguaje (C# 4.0, Java) como de plataforma y herramientas ( C, C++, PHP, Javascript, Ruby,Python… ). Y reservar las inversiones para apuestas realmente revolucionarias
Referencias
Página oficial - http://golang.org/
Happy hacking!!
~ds
PD –> Me parecen especialmente curiosas las demos del video.. calcular seno, coseno… estando en el estado de madurez que estamos en el mundo del desarrollo todos deberíamos aprender del mitico ejemplo de Ruby donde construyen un sitio web funcional en 10 minutos. Eso si que es un ‘Hola Mundo’ ;)