Keeping up! será un seminario mensual. En cada instancia se abordará un nuevo lenguaje de programación, una técnica, una característica compartida por varios lenguajes o una tecnología revolucionaría. A Keeping up! es necesario entrar con la mente abierta. El seminario dará una introducción teórica y práctica a cada uno de los temas, enfatizando las perspectivas de aplicación.
Keeping Up! with Reactivity
Viernes 18 de noviembre del 2016
Salón AU - 101
Hora: 12:30 m - 2:00 p.m. *Entrada libre
La computación reactiva fue introducida en los 60 con el diseño de la arquitectura de flujo de datos (Dataflow architecture) como un modelo de programación basado en la arquitectura de von Neumann. El objetivo inicial de este modelo de programación era facilitar la computación paralela. El modelo básico de computación se basa en el procesamiento de información por medio de una red de operaciones (estados) por las cuales fluye la información. Cada vez que una de las entradas de una operación cambia esta se ejecuta automáticamente.
Durante los últimos siete años, estas arquitecturas se han venido utilizando para la implementación de lenguajes de programación reactivos. estos lenguajes intentan dar un modelo que facilita la programación de aplicaciones en las que el control tiene que ser invertido entre dos entidades (e.g., los callbacks en Javascript). En esta edición de Keeping Up! presentaremos el modelo de computación reactivo, sus implementaciones y su uso en lenguajes como flapjax y FrTime.
Javascript y Angular
Viernes 21 de octubre del 2016
Salón SD - 201
Hora: 12:30 m - 2:00 p.m. *Entrada libre
"Los programas Javascript se ejecutan usando un único hilo de ejecución. Por ello, una gran parte de las funciones del navegador, como obtener información de otros servidores o del hardware, se deben implementar usando promesas o funciones asincrónicas.
Lamentablemente, esto puede causar que algunas tareas se tornen muy lentas o, incluso,
puedan bloquear el navegador. En la actualidad existe un mecanismo conocido como Javascript Workers para ejecutar algunas tareas en hilos adicionales de ejecución. Sin embagro, el uso de workers debe considerar algunas limitaciones en cuanto a los objetos a los que los programa tiene acceso y a los datos que se pueden intercambiar.
Esta charla pretende explicar el funcionamiento de javascript con un único hilo, los problemas que esto puede traer, el uso de javascript workers y una propuesta para integrar estos workers al framework de Angular."
Seminario Futures y Promises
Viernes 16 de septiembre del 2016
Salón O - 105
Hora: 12:30 m - 2:00 p.m. *Entrada libre
Hoy en día, es casi imposible pensar en un sistema que no requiera de algún nivel de concurrencia, especialmente porque la mayoríade nuestros dispositivos tienen más de un procesador. Sin embargo, diseñar sistemas concurrentes que funcionen siempre correctamente sigue siendo algo muy difícil: deadlocks, livelocks, y race conditions pueden aparecer en cualquier momento.
En este seminario vamos a estudiar los conceptos de Promesas (1975) y Futuros (1977), los cuales son abstracciones de los lenguajes para facilitar el control de computaciones concurrentes.
Promesas y futuros son soportados en numerosos lenguajes de programación y en este seminario vamos a ver cómo están siendo soportados en Java. Además estudiaremos cómo los lambdas en Java 8 solucionan las limitaciones que tenían en Java 5, 6 y 7 y los hacen muchísimo más poderosos.
Todos están invitados a participar en el seminario.
P.D. Está totalmente permitido almorzar durante el seminario
Seminario Lambdas
Viernes 19 de agosto del 2016
Salón W - 403
Hora: 12:30 m - 2:00 p.m. *Entrada libre
En esta oportunidad estaremos hablando sobre expresiones lambda. Estas fueron introducidas por Alonso Church como la base del calculo de funciones (llamado lambda calculo). Desde su propuesta inicial en 1936 y durante 78 años las expresiones lambda han vivido en la oscuridad de los lenguajes funcionales como Haskell o Scheme. Sin embargo su indudable utilidad, se ha demostrado con la inclusión de lambdas en los lenguajes más populares como Objective C, C++ o Java. Pese a la adopción masiva de los lambdas en los lenguajes modernos, esta útil herramienta continua siendo subutilizada.
En la charla cubriremos la definición y funcionamiento de los lambdas, al igual que su uso para construir aplicaciones flexibles, concisas y su compatibilidad con los desarrollos de punta en cloud-computing y big-data.
Todos están invitados a participar en el seminario.
P.D. Está totalmente permitido almorzar durante el seminario