viernes, 7 de marzo de 2014

Teaching Concurrency-Oriented Programming with Erlang

En esta ocasión, leímos el paper escrito por nuestro profesor de programación multinúcleo, Ariel Ortiz, el cual fue publicado en el contexto del SIGCSE’11. En este articulo se trata principalmente la enseñanza de programación concurrente utilizando el modelo de pase de mensajes (message-passing) de Erlang.
Adicionalmente, podemos explorar de nuevo las principales características de las lecturas que hemos hecho acerca de la importancia de la programación concurrente al aprovechar plenamente los nuevos modelos de arquitectura computacional o la distribución de tareas a través de diversos equipos a través de la red.
Un apartado que me pareció especialmente importante es To Mutate, Or To Not Mutate, donde se exploran las principales debilidades del modelo concurrente en lenguajes diseñados bajo el paradigma procedural u orientado a objetos, ya que hace énfasis en que la raíz de todos los problemas de sincronización surge básicamente al permitir la mutación de estados, y obviamente la falta de atomicidad de los cambios, sin embargo, al reducir las variables a estados no mutables, o finales, se reduce considerablemente la complejidad de las implementaciones concurrentes.
El uso de Erlang para implementación de algoritmos u sistemas concurrentes me parece interesante, ya que permite una implementación un poco mas transparente de los algoritmos desde su fase de planeación y producción, del lado del desarrollador, sin embargo, me parece que su API es algo limitado, además de un poco diferente a lo que los demás lenguajes funcionales (y naturalmente los procedurales) nos tienen acostumbrados.  Por lo que creo que prefiero (al menos por ahora) un lenguaje como Clojure, que implementa un API mucho mas extenso e inherentemente seguro en lo concurrente.

Para concluir, creo que lo que me parecería interesante, y espero ver en el futuro, seria un lenguaje naturalmente paralelo que además implemente alguna forma de objetos, para poder encapsular funcionalidades.

No hay comentarios:

Publicar un comentario