Al principio todo era oscuridad. Después llegaron los primeros lenguajes de programación, y en la década de los 80 llegó Erlang, uno de los protagonistas de esta historia que, para poder entender el poder que alcanzará Elixir, primero hay que explicar un poco más sobre este viejo lenguaje que sigue vivo.
Erlang es un lenguaje funcional increíblemente potente a la hora de tratar la concurrencia. Nació de las manos de Ericsson con el fin de mejorar el desarrollo de aplicaciones telefónicas. Dos ejemplos gráficos.
- ¿Habías pensado cómo tu operador de telefonía móvil sigue funcionando incluso mientras estás teniendo una actualización de software? Erlang, amigo.
- Whatsapp tiene 1.200 millones de usuarios. Manejar más de 10.000 conexiones concurrentes es un reto, pero WhatsApp tiene servidores individuales con más de 2 millones de conexiones en un único servidor. Manejado por Erlang.
¿Por qué te cuento esto si estamos hablando de Elixir?
Porque no podemos entender uno sin el otro. Debemos entender el primero para entender sobre el elixir. Erlang es un lenguaje funcional en una etapa ya madura y llena de funcionalidades que además ofrece una concurrencia difícil de replicar. Entonces, ¿por qué no acabó de cuajar entre el público general? Entre otras cosas porque es un lenguaje bastante difícil. Su sintaxis es un poco extraña, sobre todo si estás acostumbrado a trabajar con los lenguajes más populares a día de hoy: PHP, Java, JavaScript… o Ruby, del que hablaremos más tarde también.
Pero entonces viene 2011 y llega Elixir de la mano de José Valim, que dice lo siguiente: «Me gustó todo lo que vi en Erlang, pero odié todo lo que no vi». Así que, para él, sólo había una opción: Crear un lenguaje con la potencia y funcionalidades de Erlang y, siendo uno de los mayores conocedores de Ruby y parte del Rails Core Team, otorgarle la facilidad y productividad de Ruby.
¿Cómo? Con una jugada maestra. Hace correr Elixir dentro de la Erlang Virtual Machine. Así, un lenguaje moderno como Elixir JS gana robustez y se aleja de la dificultad académica típica de otros lenguajes funcionales, haciéndolo más asequible para todo tipo de programadores. Y con una sintaxis similar a la de Ruby, crea un lenguaje fácil de aprender. Además, como el lenguaje se compila a bytecode de Erlang, se pueden utilizar funciones de ese lenguaje sin ningún tipo de penalización.
Así pues, tenemos un lenguaje fácil de aprender, funcional y con un tipado dinámico bastante fuerte y que no permite cosas que sí están permitidas en tipados más débiles como el de JavaScript.
La sintaxis no es la única diferencia entre Erlang y Elixir JS, aunque es muy importante. El otro punto fuerte de lenguaje Elixir es la concurrencia. Para entender la diferencia con un ejemplo sería: Elixir JS es Git y Erlang es Subversion. La facilidad de Git es lo que se sitúa por encima. Si no has entendido este ejemplo, tienes que hacer nuestro curso de Git, mi joven padawan. Seguimos. La importancia de la concurrencia radica en que la tendencia en hardware es cada vez añadir más cores. Los fabricantes de CPUs ya no se dedican a mejorar un único núcleo para mejorar el desempeño. En lugar de eso añaden más. Y no sólo los fabricantes, los desarrolladores de software saben que el mundo, cada vez más impaciente, no va a esperar una respuesta mientras tu núcleo está ocupado.
¿Por qué es Elixir un lenguaje de futuro?
La programación funcional está de moda. Cada vez hay más lenguajes que adoptan este paradigma, pero lo que es más importante, los desarrolladores cada vez adoptan más lenguajes de este tipo, si no mira el subidón que ha pegado Scala.
Como cada vez más desarrolladores se pasan al lenguaje Elixir (sobre todo provenientes de Ruby), la comunidad está creciendo, y esto facilita que se puedan crear frameworks interesantes como Phoenix. Un framework para desarrollar aplicaciones web muy potente y con un rendimiento realmente bueno. Para ejemplificar con otro ejemplo, lo que el lenguaje Elixir es a Ruby, Phoenix lo es a Rails, ahí es nada. Me atrevería a decir que no hay ningún lenguaje más rápido que Ruby en la actualidad, pero con Elixir te da los beneficios de Erlang sumado a un desempeño muy cercano a la productividad de Ruby.
La concurrencia obtenida por Erlang no es fácil de emular por otro lenguaje. Y se convierte en algo de suma importancia cuando tienes que proveer simultáneamente a millones de usuarios.
Se dice que, con el crecimiento de usuarios en internet, el futuro es funcional, y Elixir es un lenguaje que facilita la transición a este paradigma a todo tipo de programadores.
Aprende más sobre el Elixir
Si eres programador, te invito a echarle un vistazo a este lenguaje, y qué forma más fácil que viendo el webinar a cargo de Norberto Ortigoza, director de desarrollo en Diverza e instructor iOS del Big Nerd Ranch.