PLEIAD: Explorando Nuevos Lenguajes para Mejores Programas

El laboratorio PLEIAD (Programming Languages and Environments for Intelligent, Adaptable and Distributed Systems) esta dedicado a explorar como los lenguajes de programación y sus ambientes de desarrollo pueden permitir la construcción de software evolucionable y adaptable, en particular considerando contextos desafiantes como la computación distribuida y ubicua.

Los lenguajes de programación tienen un largo de vida. Si hoy en día Java y C# son muy populares, antes C++ era el lenguaje predilecto. Antes, era C, y antes, FORTRAN. Un lenguaje de programación esta diseñado para calzar con cierto ambiente tecnológico de ejecución, y con el propósito de facilitar el desarrollo de ciertos tipos de programas. A medida que la tecnología cambia, y que los programas que la gente escribe también cambia, un lenguaje se pone cada vez más inadecuado. Por eso también es que un mismo lenguaje es sujeto a evoluciones y cambios, cómo se puede ver con las numerosas versiones de Java. Ahora que Java ya tiene más de 10 años, una parte de la comunidad de ingeniería de software y lenguajes estudia lo que a veces se denomina el “mundo post-Java”. Esta es la búsqueda de lenguajes de programación más adecuados para el futuro. Un ejemplo de interés creciente son los lenguajes dinámicos como Python y Ruby.

Además, los lenguajes de programación juegan un rol central en la manera en que los programadores manejan la complejidad de los sistemas computacionales. Por ejemplo, la programación por objetos y por componentes es la base sobre la cual muchos sistemas de gran envergadura de hoy estan construidos. La ubicuidad incesante de la computación a todos los niveles de la sociedad implica más complejidad para el software, y por ende eso llama por mejores formas lingüisticas de manejar esa complejidad. Un ejemplo de este fenómeno es la veloz emergencia del paradigma de Programación Orientada a Aspectos (AOP), el cual permite la definición modular de preocupaciones que son transversales a los objetos de un sistema, como la seguridad o la coordinación de actividades. Con AOP, se logra mejor desacoplamiento y reusabilidad de los componentes y objetos, y eso también permite mejor adaptabilidad del sistema en forma dinámica.

Áreas Principales

Es en este contexto que se desempeña el laboratorio PLEIAD, cuya investigación al día de hoy abarca tres áreas principales: la programación por aspectos (AOP), el debugging y comprensión de programas, y la programación de sistemas de computación pervasiva. A continuación detallamos brevemente estas áreas.

Programación por Aspectos. Cómo mencionado previamente, la programación por aspectos (AOP) introduce nuevos mecanismos para definir software en forma más modular, y por ende más adaptable. AOP tiene una fuerte herencia de los trabajos sobre reflexión computacional, uno de los temas sobre los cuales integrantes de PLEIAD han trabajado previamente. En el contexto de AOP, PLEIAD participa de la investigación sobre definición de lenguajes AOP. En efecto, aúnque la comunidad ya cuenta con un lenguaje AOP de alcance industrial, AspectJ, muchos temas quedan por explorar para revelar toda la potencialidad de los aspectos en el desarrollo de software. Actualmente dos temáticas principales se desarrollan en PLEIAD: la construcción y definición de lenguajes AOP, incluyendo lenguajes específicos a cierto dominio (por ejemplo un lenguaje dedicado a la definición del manejo de transacciones), y el mejoramiento de los mecanismos provistos para el control del impacto de un aspecto sobre un sistema dado. Esta investigación se hace con una mirada particular a las problematicas asociadas a la introducción de aspectos en sistemas complejos, es decir, concurrentes y distribuidos.

Debugging. El debugging consiste en ayudar el desarrollador en encontrar errores en un programa. De forma más general, esto pertenece al área de “entendimiento de programas” (program understanding). Es decir, cómo ayudar a un ser humano en entender con suficientes detalles lo que pasa en un programa como para ser capaz de modificar o corregirlo, manteniendo un nivel de abstracción que le permite aprehender el programa sin ser sobrellevado por su complejidad. En particular, en PLEIAD se está trabajando sobre un sistema de debugging “omnisciente”, es decir, un debugger donde uno puede navegar en la historia de ejecución de un programa, tanto hacia el futuro que hacia el pasado. Esto permite recorrer vinculos causales que son muy dificiles de reconstituir en los debuggers actuales, como por ejemplo saber en que momento (y en que contexto) tal variable fue asignada un valor invalido.

Computación Pervasiva. La computación pervasiva, o inteligencia ambiental, se refiere al desarrollo de sistemas computacionales para usuarios móviles con aparátos móviles, en los cuales la integración de los sistemas en la vida díaria es la más transparente posible. Esto requiere de sistemas que sepan captar su ambiente de ejecución y adaptarse a ello, en forma dinámica. Programar dichos sistemas con lenguajes tradicionales implica un nivel de complejidad enorme para manejar todos los detalles relacionados con la naturaleza vólatil del ambiente y de las conexiones. PLEIAD trabaja en lenguajes dedicados, que proveen abstracciones adecuadas para que el programador pueda especificar tanto la percepción del ambiente cómo la adaptación del sistema. Al día de hoy, se experimenta con el lenguaje AmbientTalk, desarrollado en el laboratorio PROG de la Vrije Universiteit Brussel (Bélgica) con el cual PLEIAD está colaborando. También se exploran técnicas de inteligencia artificial aplicadas a computación pervasiva.

Historia y Logros

El laboratorio PLEIAD fue inaugurado recién en Noviembre 2007, con la presencia de Ron Goldman, ingeniero de investigación de Sun Labs en EE.UU., a cargo del proyecto de Sun SPOTs, unos aparatos para inteligencia ambiental dotados de sensores y que corren una máquina virtual Java. PLEIAD está inicialmente formado por dos profesores full-time, Johan Fabry y Éric Tanter, cuatro estudiantes de doctorado y un estudiante de magister. Se están integrandos nuevos miembros, en particular en post-doctorado, con la llegada de Jessie Dedecker, creador del lenguaje AmbientTalk. Otros alumnos de postgrado se estarán integrando durante en el año y a futuro.

A pesar de ser un laboratorio joven, PLEIAD ya está logrando exponerse a nivel internacional en las distintas áreas en que se desempeña. En la conferencia ACM sobre desarrollo de software orientado a aspectos (AOSD 2008), se presentará un artículo técnico sobre scoping de aspectos dinámicos, se organizará un workshop sobre lenguajes de aspectos específicos a dominios, y se dará una demonstración del debugger TOD desarrollado en PLEIAD. Un artículo técnico sobre el debugger omnisciente ha sido publicado en OOPSLA 2007, la conferencia de referencia del ACM en el área, y otro sobre uso de TOD para programas orientados a aspectos se presentará en el simposio de computación aplicada del ACM (SAC 2008). Tambíen se organizó un workshop sobre computación inspirada en la biología en Diciembre en Valparaíso (BIC 2007), que contó con la presencia de varios expertos internacionales, tanto de Europa como de EE.UU. PLEIAD está involucrado como miembro fundador de la red de colaboración sudamericana Latin AOSD, y participa en otros proyectos de cooperación internacional, en particular con el INRIA de Francia.

Información y contacto en http://pleiad.dcc.uchile.cl/