Nuevo lenguaje de programación de Google: Go
Google -parece ser- trabaja en todos los frentes. En uno de ellos, Ken Thompson, el creador de Unix junto con Dennis Ritchie, piensa que puede cambiar el paradigma de la programación a través de un proyecto de un lenguaje de programación experimental al que han llamado “Go” .
Y ayer martes develaron el secreto de Go, liberando lo que tienen ya armado hasta ahora e invitando a otros a unirse a este proyecto de código abierto.
La industria de la computadora está siempre en una constante tensión entre hacer un inicio de cero o rehacer la tecnología actual. Los límites de los diseños de hardware aunada a la tecnología de programación han hecho que el equipo de Go tome una decisión al respecto: “Hemos encontrado algunos de estos problemas tan frustrantes que decidimos que la única manera de manejarlos es a través de la lingüística“, indicó Rob Pike, el ingeniero de software más importante del proyecto Go. “Somos gente de software de sistemas. Queremos un lenguaje haga que nuestras vida sea mejor“.
Hasta ahora, el proyecto de Google consiste en un lenguaje de programación, compiladores, un paquete de ejecución (runtime) que le permita a Go tener interconstruidos una serie de características. De hecho, y no es de sorprenderse, Go es muy similar a C y C++, pero Pike indicó que emplea las características modernas y que tiene tal versatilidad que incluso podría usarse dentro de un navegador de la web.
Hay un gran paso entre crear un nuevo lenguaje de programación y armar alrededor una fuerza importante en la industria. Sun MicroSystems, por ejemplo, tuvo éxito con Java, pero mucho menos éxito tuvo el sucesor de Fortran, llamado Fortress. No obstante, Go parece tener algunas ventajas que ningún otro lenguaje de programación tiene.
Primero, el proyecto está en Google, el cual tiene un poderoso incentivo para hacer algo útil que pueda llamar la atención a cientos de miles de servidores e incontables programadores que hay alrededor del mundo. Un experimento en Google podría tener más relevancia que muchos productos ya en el mercado de otras compañías. Y Go se ha graduado ya en un 20% del tiempo del proyecto con soporte formal. “No intentamos que sea experimental para siempre“, dijo Pike, “queremos construir algo real con esto“.
Segundo, el equipo de Go tiene un “pedigree” sin duda:
- Ken Thompson, ganador del premio Turing en 1983 y la Medalla Nacional de la Tecnología en 1989, quien con Dennis Ritchie crearon Unix. Thompson también diseño el lenguaje de programación B, que llevó a Ritchie a crear el C, usado en todo el mundo.
- Rob Pike, ingeniero de software que trabajó por muchos años en el equipo Unix de los Laboratorios Bell y más adelante en el sistema operativo que se llamó Plan 9. Ha trabajado con Thompson por años y con él crearon el esquema de caracteres ampliamente usado UTF-8.
- Robert Griesemer, quien ayudó a escribir el comilador Java HotSpot y V8, el motor de JavaScript del navegador Chrome.
- Russ Cox, un desarrollador del sistema operativo creado en Laboratorios Bell, Plan 9
- Ian Taylor, quien ha trabajado mucho por mejorar el compilador de código abierto GCC.
El nombre de Go viene del popular juego de mesa chino, así como una referencia a Google también, además de dar la idea de ir hacia algún lado, indicó Pike.
Google espera mucho de Go. Está diseñado para sacar ventaja de mútiples núcleos que pueden desarrollar tareas en paralelo. Tiene un enfoque particular para facilitar los problemas de la programación orientada a objetos. Es un lenguaje moderno con características como “recolección de basura“, el cual ayuda a los programadores a lidiar con los problemas mundanos, pero importantes, del manejo de memoria. Y está diseñado para ser muy rápido, tanto como los programas que se escriben en C o C++. Permite pues la creación rápida de programas, en primer lugar.
“Parece ser que es más difícil construir software que usarlo, incluso ahora que las computadoras son mucho más rápidas que en el pasado“, dijo Pike y añadió “el proceso de desarrollar software no se siente mejor que en la generación pasada. Deliberadamente hemos tratado de hacer un lenguaje que se enfoque a un desarrollo rápido, que compile realmente de manera eficiente, y que exprese sus dependencias eficiente y precisamente de forma que el proceso de compilación pueda ser controlado. Yo hallo esto mucho más productivo“.
En lo que se refiere a la velocidad con la que los programas corren “nuestra meta fue la de llegar a los niveles de C o C++“, dijo Pike, “pero actualmente sus programas corren razonablemente un 20 o 30 por ciento más lento“, indicó.
La página web de Go está escrita con Go, pero Google tiene ambiciones mayores. El software está diseñado para construir software para servidores, uno de ellos es Google Gmail, por ejemplo. Google piensa que podría ser bueno, en otros casos, incluir software que esté corriendo dentro del navegador, una tarea que JavaScript maneja actualmente.
“Go es al menos un orden de magnitud mejor que JavaScript“, mencionó Pike. Nótese que Google ha construido su propio navegador, Chrome, en parte para hacer más rápido JavaScript y mejorar el desempeño de la Web y Google ya está incorporando esta tecnología.
Otra característica interesante de Go en la web es que las tareas pueden ser compartidas por servidores y dispositivos de los clientes tales como PCs o teléfonos móviles que usen esos servicios. Esto hace que el servicio se pueda adaptar más fácilmente a la cantidad de poder de procesamiento de aquellos clientes, dijo Pike.
Go está diseñado para el mayor reto actualmente: los procesadores con múltiples núcleos. Los programas trabajan normalmente secuencialmente, moviéndose de una tarea a otra, un paso a la vez, pero en los procesadores multinúcleos podrían trabajar muchas tareas en paralelo. No obstante esto, Go no es la bala mágica para este problema, pero Pike es optimista en que puede ayudar: “creemos que tenemos soporte suficiente para mejorar en este punto“.
Específicamente, Go usa tecnología que data de los años sesenta, llamada CSP, o procesos que se comunican secuencialmente (communicating sequential processes, por sus siglas en inglés), que manejan la interacción entre un conjunto de programas cooperativos. Esta tecnología, indicó Pike, se usaba ya en lenguajes de programación como Occom y Erlang, pero en general no se había aplicado a la programación de sistemas.
Pike dice que no cree que vaya a resolverse el problema de la programación con múltiples núcleos a través de Go, “pero pensamos que estamos construyendo un medio ambiente en el que cierta clase de problemas pueden sacar ventaja de la arquitectura multinúcleos“. El diseño puede además aplicarse, de alguna manera, a que las tareas se extiendan en muchos servidores conectados en una red.
El equipo de Go busca ayuda. Un área de mejora es la biblioteca de tiempo de ejecución (runtime). Este tipo de librerías hacen que la programación sea mucho más rápida dando para ello una serie de herramientas y funciones de manera tal que los programadores no tengan que crear esos ingredientes cada vez. La biblioteca de Go incluye muchos elementos cruciales al diseño de Go, como por ejemplo, “el manejo de concurrencia, recolección de basura y otras tareas de bajo nivel que normalmente no se exponen a los programadores“, dijo Pike.
El equipo de Go quiere ayuda para su compilador. Thompson ha escrito cierto soporte para la compilación en procesadores de 32 y 64 bits de la familia x86, así como para los procesadores ARM. Taylor ha escrito un “front end” para el compilador GCC.
A todo esto, los procesadores ARM son los dominantes en el mercado de los teléfonos móviles en donde Google ha metido las manos con su sistema operativo Android y el software de Go es capaz de correr en los teléfonos celulares. Pike comentó: “buscamos aplicaciones interesantes en cosas como el teléfono Android. No estamos seguros hacia dónde nos llevará esto, pero es intrigante ir por ese camino“.
Google ha liberado muchos productos de código abierto en los últimos años y en parte ha dado a la colectividad toda una filosofía de desarrollo. Go es un buen ejemplo de todo esto. “Hicimos esto para ayudar a Google en primera instancia, pero decidimos que necesitamos que fuese código abierto. Necesitamos la ayuda de la comunidad“, dijo Rob Pike.

Hola, primero los quiero felicitar por el upgrade a su página, a mi me gusto mucho…
Segundo.-
¿DONDE ESTA DOMMO #188?
Llamo a una reunión urgente del SUDEN, no es cierto, ya lei lo de esperar porque estan migrando todo, no hay problema, solo espero que lo publiquen antes de salir del trabajo.
SALUDOS.
Hola les que re bien la pagina felicidades.
Esta interesante este articulo, su propio lenguaje de programacion exelente yo creo que google va a llegar muy lejos gracias a todas las inovaciones que estan creando, esto es emocionante y lo mejor de todo es que es FREE!!!
jaja sorry me comi el -do- a ver otra vez xD
Hola les quedo re bien la pagina felicidades
xD
oooooooooooooooooooooh les quedo muy bn el nuevo stylo de la paigna
felicidades a todo el equipo de matuk
saludos
Vaya, con el poder que tiene Google no dudo que llegue a colocar este lenguaje entre los mas usados en el mundo, ademas que ya se necesita un lenguaje que facilite trabajar con multiples nucleos
Buen cambio en el diseño, me late.
Gracias al equipo por preocuparse por la calidad en algo que como usuarios no nos cuesta.
Saludos a todos.
Un proyecto muy ambicioso por parte de Google el cual no dudo que pase mucho tiempo para que este listo y se puedan desarrollar un sin fin de aplicaciones con este nuevo lenguaje de programación.
Saludos
Yo creo que despues de tando software desarrollado y liberado ya se habian tardado…
me gusta bastante el enfoque que estan tomando… y en cierta manera no lo habia pensado asi, que mientras mas potentes se volvieron las computadoras, mas dificil fue crear software para ellas y no al reves como antes se pensaba…
Excelente articulo pero sobre todo excelente noticia, ya estaba esperando un lenjuage de programación por parte de Google, ahora imagino que el detractor será Microsoft y su .NET porque los demás lenguajes fuertes y a los cuales les puede hacer competencia, son de igual forma como este, FREE! gracias por la info Manuel, un saludo.
Muy bueno el articulo, pero que les sucede a estos chicos de google?, acaso quieren reinventar la rueda?, las principales caracteristicas que supuestamente mejorara Go, ya las hace JAVA como el Recolector de basura, y lo de programacion web, mmmm pues si existe JavaScript para que hacer lo mismo, es mi opinion, con respecto a software para computadoras mas potentes creo que si es importante el avance de la tecnologia, pero no lo mas importante ya que esto tiene que ver con la complejidad computacional, en lo que se tiene que hacer enfasis es en el mejoramiento de algoritmos por que esto es mas productivo que tener cada vez computadoras mas potentes.
saludos