lunes, 24 de abril de 2017

Teaching Concurrency with Erlang

En el blog de hoy hablaré sobre el artículo "Teaching Concurrency with Erlang" escrito por el profesor Ariel Ortiz en el 2011.

Como es costumbre, empezaré con la canción para esta entrada, esta vez será "Flamingo" por La Vida Boheme, espero les guste.


El artículo habla principalmente de los retos que implica enseñar programación concurrente, creo que esto se debe a varias razones, en primera, a pesar de que los lenguajes funcionales facilitan la programación concurrente, implican una curva de aprendizaje que considero incluso mayor a aprender programación orientada a objetos, en mi experiencia, que aprendí priemero programación procedural, después programación orientada a objetos y por último programación funcional esto se debe a que a pesar de que la programación orientada a objetos implica un paradigma distinto, de cierta forma estamos acostumbrados a visualizar las cosas a nuestro alrededor como objetos que realizan funciones (el clásico diagrama de Transporte -> Automóvil - Aviones con el que uno aprende herencia en programación orientada a objetos), sin embargo, la programación funcional es complicada, el hecho de que no existan ciclos y las variables sean inmutables hace complicado entender cómo se pasa la información dentro de la aplicación, además de ello, cuando uno aprende un lenguaje funcional para desarrollar aplicaciones concurrentes esto introduce el problema de que además uno debe imaginar cómo se pasa la información en la aplicación en distintos tiempos, por lo que son varios conceptos distintos a lo que uno se ha acostumbrado.

Por supuesto que si uno ha trabajo con locks una vez que supera la curva de aprendizaje de lenguajes funcionales encuentra el porqué son tan buenos para aplicaciones concurrentes, en mi caso específico, con Erlang fue extremadamente fácil, ya que había llevado un curso de programación con Clojure, el cuál sufrí porque además de todos los conceptos nuevos que comenté previamente Clojure introduce el problema de entender la sintaxis de Lisp, lo cuál es un tema para otro blog. o quizá para mi terapeuta, porque en verdad fue algo traumático.

Erlang me parece un lenguaje perfecto para enseñar concurrencia, ya que el hecho de que los programas se dividen en procesos facilita entender el paso de información entre dichos procesos, mientras que los ciclos se resuelven si uno tiene cierta experiencia con funciones recursivas.

Durante el curso he desarrollado aplicaciones concurrentes en C, Java, Javascript, Erlang y Elixir, hasta ahora el lenguaje que me ha parecido más sencillo es Elixir, sin embargo eso se debe a que ya tenía cierta experiencia con Erlang.

Wololo.

No hay comentarios:

Publicar un comentario