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.

Propuesta:

PLEIAD (Programming Languages and Environments for Intelligent, Adaptable and Distributed Systems) está dedicado a explorar en que forma los lenguajes de programación y sus ambientes de desarrollo pueden permitir la construcción de software evolucionable y adaptable. Considerando fundamentalmente 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.

Los lenguajes de programación a medida que son utilizados van adquiriendo cierta popularidad. Hoy Java y C# son muy populares. Su antecesor en popularidad fue C++ y los antecesores a este fueron C y FORTRAN sucesivamente. Los lenguajes de programación son diseñados para satisfacer determinados ambientes tecnológicos de ejecución, con el propósito de facilitar el desarrollo de ciertos tipos de soluciones. A medida que la tecnología va cambiando, los lenguajes de programación van quedando obsoletos. Es por esto que un lenguaje de programación puede verse afectado por cambios y evoluciones a lo largo de su vida. La comunidad de Ingeniería en Software y Lenguajes está constantemente en búsqueda de lenguajes de programación que satisfagan las nuevas tecnologías. Por ejemplo, ahora que Java ya tiene más de 10 años, se esta explorando lo que a veces se denomina el “mundo post-Java”. Un ejemplo claro de esta búsqueda es la utilización de forma más masiva de los lenguajes de programación 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.

Es importante señalar que los lenguajes de programación tienen un rol fundamental en la forma en la cual los desarrolladores 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 están construidos.

La ubicuidad incesante de la computación a todos los niveles de la sociedad implica más complejidad para el software. Esto llama a desarrollar mejores formas lingüisticas que manejen esa complejidad. Un ejemplo de este fenómeno es la 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. Esto también permite mejor adaptabilidad del sistema en forma dinámica.

Nota: desarrollador no es lo mismo que programador, algo así como una secretaria no es lo mismo que una dactilógrafa. {comentarios???}

Á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.

Áreas Principales

En el laboratorio PLEIAD se investigan al día de hoy tres áreas principales:

  • Programación por aspectos (AOP)
  • Depuración y comprensión de programas
  • 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.

Programación por Aspectos (AOP) : Introduce nuevos mecanismos para definir software en forma más modular y 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, aunque la comunidad ya cuenta con un lenguaje AOP de alcance industrial llamado 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:

  • 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),
  • 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 problemáticas 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.

Depuración y comprensión de programas. La depuración consiste en ayudar al desarrollador a 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 modificarlo o corregirlo, manteniendo un nivel de abstracción que le permita aprender el programa sin ser sobrepasado por su complejidad. En particular, en PLEIAD se está trabajando sobre un sistema de Depuración Omnisciente llamado TOD (Trace-Oriented Debugger). Es decir un depurador donde se puede navegar en la historia de ejecución de un programa, tanto hacia adelante como atrás en el tiempo. Esto permite recorrer vínculos causales que son muy difíciles de reconstituir en los depuradores actuales. Mediante la utilización de un depurador omnisciente podemos saber en que momento y en que contexto, determinada variable fue asignada un valor inválido, lo que con un depurador normal no se puede saber.

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.

Computación Pervasiva. La computación pervasiva o inteligencia ambiental, se refiere al desarrollo de sistemas computacionales para usuarios móviles con aparatos móviles, en los cuales la integración de los sistemas en la vida diaria es lo 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 volátil 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. En estos momentos 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.

Historia, Logros y desafíos

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 integrando 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 Depurador TOD. Un artículo técnico sobre el depurador 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). También 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.