Erlang (Software para un Mundo Concurrente!) xD

Me he decidido a implementar un pequeño Middleware Transaccional en este nuevo lenguaje Funcional llamado Erlang (wiki_es: Erlang es un lenguaje de programación concurrente y un sistema de ejecución que incluye una máquina virtual y bibliotecas).

La pregunta es ¿Porque dicho lenguaje?, acá van algunas de sus características que me llamaron bastante la atención:

  1. Es un lenguaje de programación funcional. Que significa? Que cambiar cualquier variable esta estrictamente prohibido. Si una variable es igual a 9, entonces no se puede admitir que su valor sea 10. También corre para las funciones a las cuales se les referencia o asigna los mismos parámetros, es decir, siempre devolverá el mismo valor. Para esto se le conoce como “Transparencia Referencial”.
  2. Tiene gran énfasis en la concurrencia: Es posible escribir programas que se ejecuten más rápido cuando se ejecutan en un entorno multi-nucleo.
  3. Se puede escribir aplicaciones de alta disponibilidad, permitiendo la modificación de estos “en caliente” sin necesidad de bajar el servicio.
  4. Y esta es la más interesante… el nivel de líneas de código es bastante reducida, ya que la cantidad de librerías, la concurrencia y alta disponibilidad de la plataforma, nos permite solo concéntranos en la funcionalidad real de la aplicación, bajando bastante las líneas de código a escribir.
  5. Iniciar en un nuevo patrón de Programación llamado Programación Orientada a la Concurrencia. La idea final, no es realizar un tutorial o manual de instalación y programación de Erlang, si que compartir el desarrollo de distintos sistemas que vayan siendo realizados con este lenguaje.

Links Básicos:
Erlang en Wikipedia (es) (es.wikipedia.org/wiki/Erlang)
Web Oficial (www.erlang.org)
http://erlangexamples.com/
http://ceciliaurbina.blogspot.com/2010/10/erlang.html
http://aprendiendo-erlang.blogspot.com/

Para la próxima entrega, iniciaremos un primer proyecto de construcción del mini middleware.

Saludos, Marco.

[tweetmeme only_single=”false”]