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