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:
#2
alberto
(Link)
activado
11.11.2009 13:29
(Reply)
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
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!!!!
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...
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 ....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....................
= caliente, en subida = estable, indeciso = frío, en bajada
EMPRESAS Google Apple Facebook Twitter Amazon Netflix eBay Paypal Acer ASUS Samsung Motorola HTC HP Skype
RIM IBM Nokia TiVo Microsoft Oracle Palm Dell MySpace Yahoo Sony
NAVEGADORES WEB Firefox Google Chrome Apple Safari Opera IE
BUSCADORES Google Scoopler Microsoft Bing Wolfram|Alpha Yahoo
SISTEMAS OPERATIVOS iPhone OS Windows 7 Android OS Chrome OS Mac OS X Linux en Servidores Linux en Escritorios Windows XP Palm Web OS Windows Vista Windows Mobile
DISPOSITIVOS iPhone Celulares Android Palm Pre iPod Touch Nintendo DS Project Natal Xbox 360 Blackberry Amazon Kindle PlayStation 3 Nintendo Wii Sony PSP iPod Zune HD
TECNOLOGÍAS Tiendas de Aplicaciones Aplicaciones Móviles Portales Sociales Aplicaciones Web Software Libre GPS Blogs Libros Electrónicos Blu-ray SSD Realidad Aumentada Buscadores en tiempo real WiFi "G" y "N" HDTV Proyectores 1080p Cámara Digital con video HD Cine en 3D Video por Internet Terapia Genética Autos Híbridos Energías Alternativas Robótica Nanotecnología WiFi en aviones Planes celulares ilimitados Micropagos EPUB RFID Netbooks Turismo Espacial Exploración Espacial USB 2.0 USB 3.0 SATA SD / SDHC Salud por Internet Laptops Microsoft Office WiFi "B" eSATA WiMAX FireWire/i.Link/IEEE1394 Celulares sencillos Parallel ATA WiFi "A" Compact Flash Sony Memory Stick DRM PC de Escritorio Aplicaciones de escritorio Periódicos impresos
SOFTWARE HTML 5 AJAX Javascript PHP MySQL Java Open CL Open GL ES Ruby on Rails .Net Adobe Coldfusion Map-Reduce JSON Open Office Google Docs Virtualización Objective C GMail Yahoo Mail Hotmail / Live Mail Google Wave Opera Unite Cloud Computing XML SQL C/C++ Direct X/3D Microsoft Office Adobe Flash Microsoft Silverlight Visual Basic FoxPro
RUMORES Cámara Sony Alpha 3D Celular Zune en 2010 Nikon D800 con 1080p Cámara Sony con láser Nikon D700X
Sindica eliax con RSS/Atom
Si tienes un lector RSS/Atom, agrega eliax a tu lector con este enlace (recomendado), o utiliza estos otros estándares: