texto:   A-   A+
eliax

Análisis: Sobre Google Go, su nuevo lenguaje de programación
eliax id: 7205 josé elías en nov 11, 2009 a las 10:01 AM (10:01 horas)
Esta semana Google reveló al mundo un nuevo lenguaje de programación al que llama "Go", y lo he estado estudiando desde entonces y he aquí mis impresiones...

Go es un lenguaje de programación nacido de los proyectos internos de Google hace 2 años, en donde los empleados dedican el 20% de su tiempo a proyectos fuera de sus responsabilidades habituales laborales, y en este caso los creadores de Go decidieron crearlo porque no sentía que en el mercado existían las herramientas indicadas para las nuevas realidades del mercado.

La filosofía de Go, es que sea un lenguaje creado para las tendencias actuales, en vez de simplemente tomar un lenguaje tradicional como "C" y agregarles mas cosas que incrementen su complejidad. A tal fin, Go fue pensado desde su pre-diseño como un lenguaje que asume entornos de multi-procesadores y multi-núcleos, y aplicaciones de redes altamente concurrentes.

Otro aspecto de la filosofía de Go es ofrecer el poder de lenguajes de bajo nivel (es decir, aquellos como C++ que se utilizan para crear sistemas operativos y drivers) pero con las facilidades de lenguajes dinámicos como Python o entornos como Javascript o Coldfusion.

A tal fin, Go es un lenguaje que tiene un nivel de complejidad similar a Java, pero con una filosofía de desarrollo similar a Javascript o Ruby, lo que incluye de paso protección de punteros en la memoria, y un recolector automático de referencias de objetos.

Para lograr estos objetivos los diseñadores (que incluyen a los disañadores e inventores del original UNIX, Plan 9, y el estándar UTF-8 de codificación de caracteres), crearon un compilador super-rápido que da la sensación de que uno ni siquiera está compilando, de lo rápido que es. Hablamos que archivos típicos se compilan en menos de un segundo, y todo el código fuente del lenguaje mismo se compila en unos pocos segundos (sí, puedes compilar a Go con Go).

Otra decisión que los diseñadores tomaron fue derivar parte de la sintaxis de Go desde C, lo que sin duda al menos hará que el entorno sea un poco mas familiar para nuevos adoptadores, lo que es algo mucho menos traumático que tener que aprender todo un nuevo lenguaje desde cero.

Es preciso notar que Go aun no está listo para producción, y que el motivo de Google sacar a Go al mercado es precisamente porque desea retroalimentación de la comunidad desarrolladora de software para mejorar las cosas aun crudas. A tal fin Google ha sacado a Go con una licencia Open Source (específicamente, la licencia BSD), lo que está genial.

Noten sin embargo que aunque Go no está listo para producción, que el mismo equipo de Go ha decidido demostrar la potencia del lenguaje, fabricando todo el portal oficial de Go con Go mismo, incluyendo el servidor web que sirve las páginas. Así mismo varios ingenieros de Google dicen que es la herramienta mas productiva que han utilizado para crear software de sistemas de bajo nivel.

Otro punto interesante de Go es que aunque este fue diseñado originalmente para software de sistemas, sus diseñadores dicen que es también ideal para aplicaciones web, e incluso ya tienen un prototipo funcionando en el Google Native Runtime plugin que ejecuta código binario en navegadores web.

La gran ventaja de esto es que uno podría escribir una aplicación web enteramente con Go, tanto en el lado del servidor como del navegador web, y tomar ventaja de las facilidades de Go para compartir código entre ambos entornos, así como permitiría aplicaciones dentro del navegador que ejecutarían a velocidades muy superiores a las de Javascript (por ahora Go es solo un poco mas de 20% mas lento que código nativo en C, con muchas mejoras de velocidad en el horizonte).

Sin embargo, por el momento veo difícil una migración a corto plazo a Go en el navegador web, debido a que en meses recientes el rendimiento de Javascript ha aumentado muchísimo debido a tecnologías JIT (Just-In-Time Compiler, o Compilado Justo-A-Tiempo) y a la competencia feroz entre los distintos motores de Javascript de Google, Firefox y Apple.

Pero aun así, le veo muchísimo potencial al mediano plazo en ambientes de servidores, y si logra conquistar parte de eso mercado no hay duda que al largo plazo entonces este se filtraría a futuras generaciones de navegadores web (sin duda iniciando con Google Chrome).

En mi opinión Go representa quizás el primer gran lenguaje de programación masiva para software de sistemas desde C, C++ (noten que otros entornos como PHP, Javascript, Coldfusion y Ruby fueron diseñados para entornos web y no para software de sistemas), e incluso quizás imponga una competencia viable a Java (que ha marcado su presencia imponente en software de aplicaciones de servidores con J2EE, y a cierta medida incluso en aplicaciones de escritorio, aunque no tanto de sistemas), y el hecho que tenga como respaldo a Google es ciertamente el gran empuje que tendrá Go al corto plazo.

Es preciso notar que fuera de proyectos internos de Google, y del mismo portal oficial de Go, que Go aun no se utiliza en aplicaciones públicas de Google (como GMail, Google Docs, etc), esto debido a que Go aun está en su infancia.

Por ejemplo, todas las herramientas para trabajar con Go son en linea de comando (es decir, en el shell de Linux u OS X, aun no existe una versión para Windows), las librerías externas de funciones son limitadas, y todavía no existe ningún tipo de integración con entornos de desarrollo (IDE) como Eclipse o NetBeans. Sin embargo esto representa una buena oportunidad para emprendedores que quieran hacer una carrera de su experiencia con Go.

En resumen, un lenguaje que definitivamente hay que tener en la mira. Mucho potencial. Ahora depende de la llegada de herramientas y librerías de funciones que lo hagan más fácil de utilizar y de mas utilidad.

Finalmente, para los programadores/desarrolladores de software, he aquí el ya legendario "Hola mundo!" en Go:

package main

import "fmt"

func main()
{
fmt.Printf("Hola, ??\n")
}

Página oficial de Google Go

Video de introducción a Go (1 hora de duración, enlace YouTube)...


autor: josé elías

Comentarios

  • Buena por Google.
    Toca probarlo :)

    Aprovecharé que estoy de vacaciones para darle una miradita. Gracias por la noticia ;)

  • Porqué esto 世界???

    me gusta que sea similar a c

    • Eso es para demostrar que puedes utilizar caracteres UTF-8/UNICODE como strings en Go, lo que es genial y hará mucho mas fácil crear aplicaciones multi-idiomas.

  • la verdad es que la sintaxis a primera vista no me gusta mucho, parecido a java e identico a c#, para mi hubiera sido mejor que se pareciera a lenguajes como python o ruby, google es una empresa web no entiendo porque intenta hacer algo tan similar al java cuando la mayoria de los programadores web actuales estan migrando a lenguajes mas sencillos de leer y escribir, dinamicos y expresivos

    • Martín,

      Si relees lo que escribí, este lenguaje está diseñado primordialmente para software de sistemas, no de páginas web.

      ¿Te imaginas por ejemplo escribiendo un sistema operativo en Ruby o PHP? Sería posible pero no recomedable...

  • Soy el único ingeniero alegre con la noticia? Con el hecho que se parece a Java y C ya tiene un millar de programadores mirándolo bonito, esto más el respaldo de Google, oook, tendremos una nueva revolución!!!!


    Aunque quiero algo para IA.

  • |Me gusta el muñequito uuuuuuuuuuuuiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii

  • La verdad me gustó la noticia, pero no mucho el lenguaje, concuerdo con las opiniones que dicen que se parece demasido a Java y C, y eso no me gusta, ya que la sintaxis de estos lenguajes son muy complejas y te enredas mucho con parentesis, corchetes y llaves...me hubiera gustado si google hubiera mostrado algo con una sisntaxis más intuitiva y facil de leer como la de python, que debido a la importancia de la indentación obliga a los proramadores a cumplir las buenas prácticas de orden en sus programas y a hacer programas más entendibles y más legibles.
    La verdad resalto que no me gustaría un nuevo Java para la web, o multiuso como manifiesta eliax, pues como estudiante de ingeniería informática, les puedo contñar que a nosotros nos enseñan a programar en C y luego Java, pero por casualidad descubrimos Python y vimos que el mundo puede ser más simple, con muchas funciones por defecto que no se deben implementar o exportar de packages, bibliotecas o como se llamen...

    • Es que C y Python no son comparables. Es como comparar al editor vi con el edit de DOS.

      Go pretende tener el potencial que tiene C y para eso no puede ser muy simple.

  • Buenismo, va muy bien! no me ha fallado!

    Eliax, te propongo crear un sitio (en eliax seria bueno) de desarrollo de aplicaciones libres en Go. te parece? Les gusta la idea?

    Supongo que somos varios desarrolladores aki en Eliax...

  • Hasta en Japones! que grande ;)

  • fmt.Printf("Hola, 世界\n") muestra en la salida Hola, 世界

    Hola Mundo sería

    fmt.Printf("Hola, Mundo\n")

    y Hello World sería

    fmt.Printf("Hello, World\n")

    Hay que leer en vez de cortar y pegar. Por el resto bien

    • Jajaj creo que tienes un problema xD

  • Todo esto se parece cada vez mas a Microsoft. A la propia torre de Babel que ellos mismos crearon y bajo la que estan sucumbiendo en lenta agonia...

    Tal vez esto sea un indicador del principio del final de google

    tiempo al tiempo

  • no se...me parece una copia descarada del c#, habra que ver si es igual o mas poderoso, con el odio ciego que le tienen las personas a microsoft bastaria con copiar el c# ponerle otro nombre y ya saldrian miles de google fans diciendo que es el mejor lenguaje jamas inventado :D....y por lo de..."Go representa quizás el primer gran lenguaje de programación masiva para software de sistemas".....c# no lo es?, el framework .net es rapidisimo, si bien no es tan eficiente como c++ para aplicaciones de escritorio no es limitado y he visto proyectos enormes escritos en c# , habra que testear este de google a ver pero no creo que le saque mucha ventaja...y si bien no tiene la portabilida de java...para algo esta mono que funciona de joya, tal vez con algunas limitaciones pero va bastante bien(ojo ya parezco un defensor de c# y microsoft pero no es cierto, simplemente c# me parece un lenguaje bueno)

    para terminar google como que se le paso la mano copiando y hasta se copio el nombre de un lenguaje existente!!..lol....habra que ver como termina eso http://code.google.com/p/go/issues/detail?id=9

  • Go, señores aveces hay que dejarnos de fanatismo en el mundo hay personas catalogadas como winfanboy, macfanboy, linuxfanboy pero tambien estan los googlefanboy, ahora mismo google esta como una especie de rey midas con las personas, que se tiene la percepcion que todo lo que toca se vuelve oro, vamos hacer mas objetivo, y analizemos a fondo que Go es una copia de C# venden la idea de que es de c/c++ pero en realidad es de C# y puede ser del mismo pero a su estilo, porque dijo esto por las caracteristicas que nos han querido vender de que los lenguajes orientado a objecto tienen problema con el Garbage Collector (recolectores de basura), una mentira absurda ya que lenguajes como java y la plataforma .net (c#) tienen esta caracteristicas otras de las cosas es aprovechamiento de los procesadores multinucleros, si vemos microsoft ha estado trabajando en la programacion en paralelo (que tiene un buen futuro y hacia apunta todo) desde hace un tiempo, ya esta la version 4.0 del framework que incluiera nativamente el soporte para programacion en paralelo, de manera que creo que debemos ser mas objetivos y ver en lo que se esta convirtiendo Google, se esta convertiendo para decirlo de una manera mas moderna en una microsoft 2.0

  • Muy Buen Analisis, paso a felicitarte por ser muy puntual y objetivo...
    Lei cientos de blogs y paginas y todos hablan de lo mismo copy/paste.
    Espero que sigas asi brindando información valida y muy util sigue adelante....................

Añadir Comentario

tu nombre
tu email
(opcional)
web personal
(opcional)
en respuesta a...
comentario de caracteres máximo
5 + 9 = requerido (control anti-SPAM)
 

"Mientras mas móviles, tablets, etc.. menos Flash y mas html5...."

por "thegoodboy66" en abr 12, 2010


en camino a la singularidad...

©2005-2014 josé c. elías
todos los derechos reservados
como compartir los artículos de eliax