Un grupo de creadores presentó los lenguajes de programación que, esperan, revolucionarán la informática.
Un equipo de creadores de dos docenas de nuevos lenguajes de programación—algunos diseñados para permitir nuevas aplicaciones web y dispositivos móviles—presentó su trabajo la semana pasada en Portland, Oregón. El motivo de la reunión fue el primer Campamento de Lenguajes Emergentes en la Convención de Código Abierto O'Reilly.
Entre los diseñadores se encontraban aficionados deseosos de mostrar su capacidad de desarrollo, académicos con la esperanza de influenciar a la próxima generación de informática, e investigadores de empresas como Microsoft y Google deseosos de crear nuevas herramientas para hacer frente a la evolución de las aplicaciones y las infraestructuras.
Durante densas presentaciones de 20 minutos, los diseñadores compartieron detalles de sus lenguajes embrionarios. Lo que todos los diseñadores tuvieron en común fue un deseo de desprenderse de los convenios de programación de décadas de antigüedad, que hoy día parecen cada vez más inadecuados para la informática moderna—un deseo compartido por la industria tecnológica en general. "En la actualidad vivimos un renacimiento dentro del diseño de lenguajes", afirma Rob Pike, ingeniero de Google y codiseñador de Go, un lenguaje de programación desarrollado en la empresa. "Además, la mayor razón para hacer todo esto es que los principales lenguajes existentes simplemente no solucionan los problemas que la gente desea resolver".
Uno de esos problemas, de gran interés para grandes empresas como Google, así como para Facebook y Amazon, consiste en cómo gestionar la cada vez mayor complejidad de las plataformas de computación multinúcleo distribuidas, como por ejemplo los centros de datos y las redes en la nube. El lenguaje de Google, Go, fue presentado a finales de 2009 para este propósito, como alternativa a C++, el cual, según Pike, no permite a los programadores aprovechar fácilmente la moderna arquitectura de computación en paralelo. "C++, que es el idioma principal en los sistemas de Google y muchos otros lugares, esencialmente tiene 20 años de antigüedad", afirma Pike. "Muchas de las cosas que entendemos hoy día sobre hardware y redes—y sobre cómo están cambiando las ideas de diseño de software—no han tenido la oportunidad de influir en el diseño de ese lenguaje".
En la escala de Google, Pike y sus compañeros de equipo descubrieron que C++ limitaba la productividad puesto que tardaba minutos u horas en compilarse. (La compilación es el proceso por el que el código fuente legible por humanos se traduce en lotes al "lenguaje" binario de las máquinas que la CPU de un ordenador es capaz de ejecutar). Go reduce las redundancias en el proceso de compilación, lo que significa que "los programas pueden estar listos para ejecutarse en cuestión de segundos", afirma Pike. Pike no cree que Go destrone a C++ como lenguaje dominante, "simplemente pensé que necesitaba un poco de competencia", afirma, aunque añade que Go ya está siendo utilizado en "proyectos reales" internos de Google.
Otro ámbito en constante evolución dentro de la informática hace referencia a los programas que se ejecutan en dispositivos móviles vinculados en redes inalámbricas creadas para ese fin. AmbientTalk, un lenguaje experimental presentado por Tom Van Cutsem desde Vrije Universiteit Brussel, en Bélgica, explora un nuevo paradigma llamado "programación orientada al ambiente", que se aparta de la computación tradicional distribuida principalmente de dos formas. En primer lugar, no se basa en una infraestructura central. En segundo lugar, asume que las conexiones de red son volátiles e impredecibles (como suele ocurrir con los dispositivos móviles, que entran y salen de rango entre sí). Según Van Cutsem, "AmbientTalk es lo suficientemente inteligente como para crear un buffer de mensajes, de manera que cuando la conexión se cae, no se pierden, y cuando la conexión se restaura, envía los mensajes como si nada hubiera pasado".
En una aplicación AmbientTalk experimental, dos teléfonos inteligentes pueden intercambiar de forma inalámbrica metadatos de sus respectivas bibliotecas de música, y ofrecer recomendaciones de canciones a cada usuario. Si un usuario se sale del rango durante este proceso de sincronización, la aplicación no se bloqueará ni se colgará. Hay otros lenguajes que también proporcionan esta funcionalidad, aunque con AmbientTalk, "este comportamiento consistente en esperar y aceptar las interrupciones en la red está integrado por defecto en el lenguaje", afirma Van Cutsem. "Esto nos permite crear aplicaciones sin esfuerzos adicionales de programación."
Kodu, un lenguaje presentado por Matt MacLaurin desde el FUSE Labs de Microsoft, soluciona un problema en el extremo opuesto del espectro: cómo llegar, en primer lugar, a los jóvenes interesados en la programación. "Nuestra hipótesis de trabajo es que la programación es intrínsecamente fascinante y divertida, como los crucigramas o el sudoku", afirma MacLaurin. "Estamos tratando de cambiar la percepción cultural de lo que es la programación, comenzando con los niños".
Kodu es un "lenguaje de programación visual" gratis para Xbox 360 y PCs con Windows que introduce los conceptos de programación en un formato de vídeo-juego. En lugar de utilizar abstracciones como variables y cadenas en una interfaz textual, Kodu proporciona un lugar de juegos en 3-D poblado de personajes animados que pueden seguir un guión (a través de un mando de juegos de Xbox, o un teclado y ratón) para llevar a cabo acciones de fácil comprensión—como por ejemplo comer manzanas o luchar contra enemigos. Sin embargo esos objetos y acciones están unidos directamente a conceptos de programación "reales", haciendo de Kodu todo un completo lenguaje capaz de aplicar un tipo de lógica sofisticada. "Hemos recibido una estupenda validación por parte de algunos teóricos del lenguaje en Microsoft", afirma MacLaurin. "El verdadero éxito reside en que los niños pueden entenderlo sin estar en presencia de un profesor de informática, y construir cosas con él que no esperábamos".
Pike, Van Cutsem, y MacLaurin están de acuerdo en que los lenguajes de programación especializados serán cada vez más importantes en las próximas décadas. Sin embargo, eso no significa necesariamente que los nuevos lenguajes empujen a un lado a los viejos para hacerse con el dominio.
Alex Payne, ex-ingeniero de Twitter (y en la actualidad jefe de producto y director de tecnología de BankSimple, una startup de finanzas personales), que además organizó el Campamento de Lenguajes Emergentes, afirma que es mucho más probable que "la programación políglota" se convierta en la norma, con programadores capaces de alcanzar fluidez en muchos idiomas distintos y optimizados para diferentes problemas. "A partir de ahora, esto va a ser una Torre de Babel", aseguró. "Pero no creo que sea necesariamente algo malo".