miércoles, 11 de noviembre de 2009

Al parecer Google ha entrado a una nueva parte del desarrollo de software, pero ahora no desarrollando un software si no un lenguaje para desarrollar software, ha comenzado a crear y desarrollar un nuevo lenguaje de programación llamado GO.
El desarrollar un nuevo lenguaje que aproveche las ventajas del hardware es interesante y mas si llega a facilitar el desarrollo de nuevos programas que puedan aprovechar al maximo el potencial que tienen enfrente.


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.

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.

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.

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.

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.


REFERENCIAS

Matuk

Pagina de Go

No hay comentarios: