miércoles, noviembre 11, 2009
|
![]() ![]() 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
Añadir Comentario |
en camino a la singularidad...
©2005-2025 josé c. elías
todos los derechos reservados
como compartir los artículos de eliax
Seguir a @eliax
Buena por Google.
Toca probarlo :)
Aprovecharé que estoy de vacaciones para darle una miradita. Gracias por la noticia ;)