Erlang

Erlang

Hoy en día estamos rodeados de la programación en paralela y en concurrente, sin embargo no somos conscientes de lo implica y de las diferencias entre estos dos tipos de programación.  A pesar de que pensamos que paralelo y concurrente es lo mismo no es así. Un programa en paralelo es aquel que tiene un proceso con instrucciones o partes que se pueden realizar de forma simultánea. Por otra parte, los programas concurrentes son aquellos que tienen trabajos o partes que se realizan de forma al mismo tiempo, en otras palabras es cuando múltiples trabajos corren al mismo tiempo en diferentes procesadores o en distintos hilos de ejecución.  Existen lenguajes de programación que facilitan el desarrollo de programas concurrentes. Un ejemplo de esto es Erlang.

Erlang  es un casi un lenguaje funcional con escritura dinámica y con asignaciones únicas a variables. Asimismo el sistema de ejecución de Erlang tiene soporte incorporado para la concurrencia, distribución y tolerancia a fallas. Esto se logra debido a la asignaciones únicas ya que evita que los datos se corrompan, no obstante los distintos trabajos se logran comunicar a través de mensajes asíncronos.  A pesar de que el lenguaje fue diseñado originalmente por Ericsson, específicamente por Joe Armstrong, para construir sistemas de tiempo real en tiempo real masivos y escalables con requisitos de alta disponibilidad, hoy en día está abierto para todo público y forma parte de múltiples productos de software.  Por ejemplo Facebook utiliza Erlang para el backend, lo cual no es de sorprenderse dado que la plataforma soporta a miles de usuarios que haces distintas actividades. 

La programación en concurrente y en paralela es un aspecto importante para los sistemas de tiempo real. Si solo se pudiera procesar un solo trabajo, en este caso una solicitud de un cliente, los otros trabajos no se ejecutarán y los clientes se quedarían esperando sin resolución alguna. En cambio cuando se pueden ejecutar distintos trabajos a la vez, te aseguras de que contestar cada una de las peticiones hechas por distintos clientes al mismo tiempo. 

Referencias:

[1]Erlang. (s.f). What is Erlang? Recuperado de: http://erlang.org/faq/introduction.html

[2] Jason, L. (2016).  What is Good About Erlang? Recuperado de: https://www.quora.com/What-is-good-about-Erlang

Comments