Google Go: Hace falta un nuevo lenguaje?

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 😀 

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’ 😉

Publicado por

6 comentarios en “Google Go: Hace falta un nuevo lenguaje?”

  1. El otro dia, lei en 20minutos, donde me gusta ver cuando se critican unos con otros, en un tema de windows7, uno que vaticinaba:”Ya vereis cuando salga el SO de Google… desbancará a los demas y la gente tendra que aprender usar GNU para manejarlo…”
    Y es que algunos creen, que destacar en alguna cosa (como es google en internet y como buscador, que se ha convertido en un monstruo de materia), cree, que asi como asi, tambien puede derrotar a windows, linux o Apple en los SO, solo, por que yo lo diga.
    Lo del “GO” , al menos que se saque rentabilidad, no creo que llegue a desbancar a ningun otro lenguaje, ni al omnipresente PHP.

  2. MMMmm… no lo he probado pero voy a echarle un vistazao.
    No creo que todo nuevo lenguaje que deba salir deba estar específicamente orientado a un propósito específico: queda muuuuuuuuuuuuuuuuuucho espacio para lenguajes de propósito general, si estos son capaces de innovar en los aspectos que adolecen la mayoría de lenguajes actuales…
    … aunque al final, el factor que suele decidir la balanza no es tanto el lenguaje en si, sino el conjunto de herramientas/liberías/frameworks que puedan montarse alrededor.

    Si me permites un comentario sobre tu última apreciación, dices que:
    “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”

    Y aunque puedas tener razón, tus palabras se podrían haber aplicado también cuando microsoft sacó C#, que como *lenguaje* no aportaba absolutamente nada cuando salió (otra cosa distinta es toda la infraestructura de .NET).

    Un saludo fiera!!! 😉

  3. @eduard … aaamos a discutir un poco x)

    Estoy de acuerdo en que queda especio en los lenguajes de propósito general, sobre todo en los dinámicos, pero partiendo de que Go es un proyecto de investigación, debería abrir lineas de investigación y tener objetivos.

    Sobre C#, si nos ponemos en el contexto de cuando salió… tenemos un lenguaje que va a código intermedio, pero que se ejecuta en nativo, que no tiene punteros explítitos, que recolecta basura, etcétera…. no había ninguno que lo hiciese, Era el primero en mezclar lo mejor del mundo nativo (C++) y lo mejor del mundo Java 🙂

    ciao!

  4. He profundizado algo más estos días y reconozco más cosas interesantes de las que ví al principio, sobre todo relacionadas con las funciones, manejo de arrays y el hecho de que el testing esté integrado en el lenguaje

    pero sigo sin verle una dirección

    ciao!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *