sábado, 9 de marzo de 2019

Joe Armstrong on Erlang


Una vez leídos los capítulos 1 a 4 del libro de Joe Armstrong pude entender, en su mayoría, cómo funciona el lenguaje Erlang, pero en su podcast hace algunas afirmaciones que me dejan intrigado. Una de las cualidades más relevantes del sistema es la concurrencia manejada por el mismo lenguaje de programación, pero no por el sistema operativo, esto se lleva a cabo a partir de una implementación del System Runtime muy pesada y completa. Básicamente el sistema operativo se encarga de manejar archivos y sockets, pero todos los procesos que se crean y el manejo de mensajes de un proceso a otro lo hace el mismo sistema.

   Es interesante que a Joe y su equipo de trabajo se les ocurriera hacer el sistema utilizando la visión que tienen del mundo concurrente, sabiendo que las tareas que realizamos en el día a día son concurrentes y no secuenciales. Se dedicaron a definir los procesos como objetos y manejar la transmisión de información a través de mensajes, de la misma forma en que se hace en el mundo real. Esto les permitió eliminar los problemas de deadlocks, starvation, race condition y el acceso a memoria, porque ya no existe la memoria compartida en este lenguaje de programación, en su lugar de utiliza información inmutable. Todas las variables son declaradas una sola vez y no pueden cambiar su valor, lo que permite que sea más fácil manejar la información entre procesos.

   Ahora bien, la simplicidad con la que se desarrolló el sistema utilizando como base que los programadores saben lo que están haciendo, me impresionó. Saber que solamente hay que programar el happy path y que el programa automáticamente funcionará de manera concurrente me parece maravilloso. Nos facilita el trabajo a los programadores para hacer uso de los nuevos procesadores que salen ya con multinúcleo. Aprovechamos estas herramientas para crear código más entendible, más corto, más funcional, más eficiente y que requiere menos tiempo y esfuerzo.

No hay comentarios:

Publicar un comentario