Primeros pasos con la programación en Erlang en FreeBSD

Introducción

Erlang es un lenguaje de programación funcional creado en Ericsson, diseñado para ser altamente escalable, de alta disponibilidad y tolerante a fallos, y que te permite cambiar módulos de código en tiempo de ejecución. La estabilidad de FreeBSD y la robustez de Erlang forman un equipo perfecto.

Erlang está ganando cada vez más popularidad gracias a su robustez y tolerancia a fallos. Cuando Facebook compró WhatsApp en enero de 2014, se supo que WhatsApp está construido sobre tecnología FreeBSD y Erlang, capaz de gestionar 1 000 000 de conexiones simultáneas con un solo servidor.

Software desarrollado con Erlang

Entre el software más destacado creado con Erlang se encuentra

  • Apache CouchDB, una base de datos JSON

  • ejabberd, un servidor XMPP con gran capacidad de escalabilidad,

  • RabbitMQ, una cola de mensajes muy robusta,

  • Riak, un almacenamiento NoSQL de clave-valor con escalabilidad lineal,

  • WhatsApp, la aplicación de mensajería instantánea más exitosa

Erlang en FreeBSD

Como es habitual en FreeBSD, el software se instala a través de un puerto o un paquete. Voy a dar por hecho que instalas el paquete ejecutando pkg install erlang, lo que te instala Erlang/OTP 18.2.x. OTP son las siglas de Open Telecom Platform y es un conjunto de componentes que hacen que Erlang sea tan genial. Cuando hablo de Erlang, en realidad me refiero a Erlang/OTP.

Primeros pasos con el intérprete

Para iniciar el intérprete de Erlang, ejecuta erl. Se abrirá un shell que esperará a que introduzcas algo. Puedes salir escribiendo q(). El punto es importante, ya que marca el final de tu entrada y Erlang empieza a ejecutar tu código.

Mostrar rutas de código

 # erl
Erlang R16B03-1 (erts-5.10.4) [source] [async-threads:10] [hipe] [kernel-poll:false]

Eshell V5.10.4  (abort with ^G)
1> code:get_path().
[".","/usr/local/lib/erlang/lib/kernel-2.16.4/ebin",
"/usr/local/lib/erlang/lib/stdlib-1.19.4/ebin",
"/usr/local/lib/erlang/lib/xmerl-1.3.6/ebin",
"/usr/local/lib/erlang/lib/wx-1.1.2/ebin",
"/usr/local/lib/erlang/lib/webtool-0.8.9.2/ebin",
"/usr/local/lib/erlang/lib/typer-0.9.5/ebin",
"/usr/local/lib/erlang/lib/tv-2.1.4.10/ebin",
"/usr/local/lib/erlang/lib/tools-2.6.13/ebin",
"/usr/local/lib/erlang/lib/toolbar-1.4.2.3/ebin",
"/usr/local/lib/erlang/lib/test_server-3.6.4/ebin",
"/usr/local/lib/erlang/lib/syntax_tools-1.6.13/ebin",
"/usr/local/lib/erlang/lib/ssl-5.3.3/ebin",
"/usr/local/lib/erlang/lib/ssh-3.0/ebin",
"/usr/local/lib/erlang/lib/snmp-4.25/ebin",
"/usr/local/lib/erlang/lib/sasl-2.3.4/ebin",
"/usr/local/lib/erlang/lib/runtime_tools-1.8.13/ebin",
"/usr/local/lib/erlang/lib/reltool-0.6.4.1/ebin",
"/usr/local/lib/erlang/lib/public_key-0.21/ebin",
"/usr/local/lib/erlang/lib/pman-2.7.1.4/ebin",
"/usr/local/lib/erlang/lib/percept-0.8.8.2/ebin",
"/usr/local/lib/erlang/lib/parsetools-2.0.10/ebin",
"/usr/local/lib/erlang/lib/otp_mibs-1.0.8/ebin",
"/usr/local/lib/erlang/lib/os_mon-2.2.14/ebin",
"/usr/local/lib/erlang/lib/orber-3.6.26.1/ebin",
"/usr/local/lib/erlang/lib/observer-1.3.1.2/ebin",
"/usr/local/lib/erlang/lib/mnesia-4.11/ebin",
[...]|...]
2> 

Conceptos básicos

Enlaces adicionales sobre programación en Erlang

Un recurso muy bueno para programar en Erlang es ¡Aprende un poco de Erlang para tu propio bien!