El pasado sábado 23 de Junio en Bogotá se llevo a cabo el evento Reto de Programación “GO 101“, cuyo enfoque principal fue conocer la sintaxis, la praxis y características del relativamente nuevo lenguaje de Google “GO”. La génesis de Go fue en el 2007, pero el año de lanzamiento al público fue en el 2009. El diseño inicial de Go comenzó el 21 de septiembre de 2007, utilizando un 20% a tiempo parcial del proyecto Google Inc. Tres expertos ingenieros detrás de su desarrollo: Robert Griesemer (conocido por su trabajo en la máquina virtual Java HotSpot), Rob Pike (miembro del equipo Unix en Bell Labs, trabajó en Plan 9 y el sistemas operativos Inferno, además del lenguaje de programación Limbo) y Ken Thompson (miembro del equipo de Unix en los Bell Labs, uno de los padres de C, Unix y el sistema operativo Plan 9, desarrollado conjuntamente con Rob Pike en formato UTF-8). El hecho de citar a los autores del lenguaje es para saber cuál es el rumbo del mismo, y que se puede esperar con respecto a la evolución, soporte y continuidad de solución a los bugs y no que tenga el triste final del famoso DART.
Lenguajes que influyen e inspiran Go
Sus creadores lo proclaman como el “C del siglo 21″. Pertenece a la familia de lenguajes C, así como C++, Java y C#.
Hubo una importante contribución del Pascal/Modula/ que son lenguajes familia Oberon (las declaraciones, y los paquetes). Su mecanismo de concurrencia se basa en la experiencia adquirida en limbo y Newsqueak, que inspira la teoría de Tony Hoare CSP (Comunicación procesos secuenciales), lo que es esencialmente el mismo mecanismo utilizado por el lenguaje Erlang.
Se trata de un lenguaje completamente de código abierto, distribuido con una licencia BSD, por lo que puede ser utilizado por todo el mundo, incluso para fines comerciales sin cargo, y que incluso se puede cambiar por otros.
También tiene características de un lenguaje dinámico, como Python y Ruby.
Google y sus creadores responden ¿ Por qué y para qué un nuevo Lenguaje?
- C/C++ no evolucionaron con el panorama de la computación, en más de una década no ha surgido un lenguaje nuevo: por lo que existe la clara necesidad de nuevos lenguaje de sistemas, apropiados para las necesidades de nuestra era de la computación (aclaración específica de Google).
- Contrastes con la potencia de cálculo; pues el desarrollo de software no es considerablemente más rápido o para tener más éxito (considerando el número de proyectos fallidos) y las aplicaciones siguen creciendo en tamaños considerables para procesar datos de gran cantidad, por lo que un nuevo lenguaje de bajo nivel, pero equipado con más conceptos, que se necesitan para suplir dichas necesidades.
- Go es un intento de combinar los tres deseos del desarrollo: la eficiencia, la compilación; por lo tanto rápido, rápida ejecución, y la facilidad de programación. Paradigma que hasta le fecha ningún lenguaje suple estas necesidades.
Go fue originalmente concebido como un lenguaje de programación de sistemas, de propósito general, que se utilizará para procesos pesados en el servidor (afirma Google) en el mundo de los servidores web, arquitecturas de almacenamiento y similares. Sin embargo Go no es adecuado para software en tiempo real debido a la recolección de basura y la asignación automática de la memoria.
Plataformas soportadas en Go
Go está disponible en código fuente y binarios para las plataformas:
- FreeBSD 7 +: amd64, 386
- Linux 2.6 +: amd64, 386, el brazo
- OS X (Snow Leopard + León): amd64, 386
- De Windows (2000 + ó superior): amd64, 386
La portabilidad del código de Go entre Sistemas Operativos es excelente (suponiendo que el uso puro código de Go, nada de CGO, inotify o paquetes de nivel muy bajo).
Herramientas e información sobre Go de Google
- Sitio oficial de Go
- IDE de desarrollo para GoGolang LiteIDE (Este se utilizo para realizar el test y la verdad es completo para funciones básicas del lenguaje).
- Plugin para el IDE EclipseGoClipse
- Plugin para SublimeText GoSublime
- Instalación de Go en diferentes sistemas operativos
- Tour sobre la sintaxis y praxis del lenguaje Go
- Configuración y entornos según sistema operativo para Go
- Preguntas y respuestas frecuentes sobre el lenguaje Go (FAQ), para aclarar dudas sobre el lenguaje que es y para que sirve, el alcance y muchas otras que realmente te recomiendo leer.
- Wiki sobre la comunidad de Go
- Blog oficial de Go
- Sección de código de practica para profundizar conceptos del lenguaje “Codewalks”
Construcción de una aplicación Web con Go Tutorial recomendado para que practiques HTML5, CSS3 y Javascript.
Conclusiones sobre la interacción y el trabajo con Go
Go es un lenguaje del lado del servidor lo que en el futuro puede servir para desplegar aplicaciones web, incluso el App-Engine de Google ofrece desplegar tus aplicaciones de prueba. Si quieres dar tus primero pasos te recomendamos hacer el Tour de Go es curioso el orden de los temas pero es fácil de entender. Después de jugar un rato con el prueba con la Construcción de una aplicación Web con Go.
Oscar Lopez quien fue la persona a cargo de la transferencia de conocimiento en Go para el evento “Evento: Reto de Programación GO 101” concluye que este lenguaje es más enfocado para trabajar de lleno con el servidor e interactuar con procesos complejos y grandes cantidades de datos.