Cuatro importantes lenguajes de programación que no sabías que existían

Cuando uno se prepara para ser ingeniero o técnico en la rama de tecnología o simplemente aprende por su cuenta a programar se topa con lenguajes de programación clásicos como C, C++, Java, Python o C#. Ciertamente estos lenguajes tienen una larga trayectoria siendo protagonistas de grandes proyectos como en Sistemas Operativos, Sistemas ERP, Servidores, Motores de búsqueda, etc.

En esta última década ha surgido una adopción masiva por lenguajes como JavaScript, Ruby, PHP y han tenido mucho impacto en la comunidad del software libre. Por mencionar un ejemplo, Node.js, un entorno de desarrollo basado en JavaScript ha despertado la atención de muchos programadores a nivel mundial y por consecuencia ha surgido la intención de mejorarlo. Si quieres tener más información te recomiendo visitar este otro post.

Solo para hacer un bosquejo, en la siguiente línea de tiempo se muestra la popularidad en el tiempo de algunos lenguajes en los repositorios alojados en GitHub.

Ya que tenemos esta idea, ahora hablaremos de 4 lenguajes de programación que, si bien no tienen tanta luz en la comunidad de software libre, forman parte fundamental del núcleo en la construcción de algunos grandes proyectos de gigantes empresas de tecnología.

El listado se presentará a manera descriptiva sin un orden en especial resaltando en cada lenguaje las caracterísicas más importantes, un poco de historia(¡vamos! es importante conocer el origen de las cosas), un ejemplo de uso en producción y un pequeño trozo de código(el típico hello world) para no quedarnos con la curiosidad. Sin más preámbulos, ¡a por ellos!

1. Erlang

Descripción/Origen:

Erlang sea quizás uno de los lenguajes más antigüos en esta lista, pues fue creado el año 1986 por la compañía sueca de telecomunicaciones Ericsson para resolver el problema de concurrencia en su servicio el cual para la época fue muy un reto muy complicado. En un comienzo el lenguaje fue de código cerrado pero en el año 1998 lo hicieron Open Source. Es un lenguaje que corre bajo una máquina virtual llamada BEAM. Erlang no viene solo, sino con OTP que es una serie de librerías que lo complementan. Tú amigo programador que eres entusiasta y quieres hechar una mano al código fuente aquí te dejo su repositorio.

Características:

  • Lenguaje funcional
  • Construido en mente para crear concurrencia y aplicaciones distribuidas
  • Estilo de programación declarativa
  • Lenguaje que permite ser escalado muy fácilmente
  • Capacidad de arreglar el código en tiempo de ejecución (hot fix)

Caso de uso:

Un caso de uso resaltante es en Facebook, pues su sistema de chat está enteramente programado en este lenguaje. El 2007 vieron la necesidad de crear el sistema de chat y fue que a través de una hackatón se creó el backend del chat en una noche (un mockup claro), luego lo hicieron realidad con 4 ingenieros y para el 2009 ya pudieron menejar más de 200 millones de conexiones simultáneas. Si quieres más detalles de este interesante proyecto te dejo este slide en el cual se explica con más detalle la implementación, y en este otro hay discusiones y comentarios.
Otro caso de uso es el sistema de mensajería de WhatsApp, el cual también está programado en este lenguaje. Para más info visita este link.

Código:

-module(hello).
-export([hello_world/0]).
hello_world() -> io:fwrite("hello, worldn").

2. Scala

Descripción/Origen:
Scala es un lenguaje creado el año 2003 por Martin Odersky, pero el diseño lo empezó el 2001 en una universidad de investigación suiza continuando un previo trabajo llamado Funnel, un lenguaje de programación que combinaba las ideas de programación funcional y las de Petri nets(un lenguaje de modelo matemático para sistemas distribuidos). Desde sus inicios, el lenguaje tuvo las ideas base de Java y fue teniendo más acogida en el tiempo por su peculiar enfoque. Es así que el 2011 el equipo de Scala levanta fondos por $2.3 millones lo cual hizo que se dispare en todo sentido y se genere una gran comunidad de defensores de Scala (entre ellos muchos expertos en Java). Otro dato importante es que también corre en la máquina virtual de Java (JVM). También puedes hecharle una mano a la comunidad en su repo.
Características:
  • Lenguaje fuertemente orientado a objetos y funcional
  • Como mencioné, es amigo de Java así que se pueden importar clases Java y es de tipado estático
  • Todo son objetos, incluso las funciones
  • Como su nombre sugiere, el lenguaje es altamente escalable
  • El lenguaje evita el uso de código repetitivo y alienta el uso eficiente del mismo

Caso de uso:

Twitter, caso emblemático de uso de este lenguaje que lo prefirió ante Ruby-on-Rails el año 2011. Cambió todo su backend de mensajería por Scala y mencionaban que los iba a ayudar a aumentar drásticamente la velocidad en búsqueda y procesamiento. Si quieres más detalles de este temita visita este link.

Otro caso de uso es LinkedIn porque aseguran es un lenguaje que se adapta muy bien para ser asíncrono; otra vez, si te interesa puedes leer su testimonio.

Código:
object HelloWorld {
def main(args: Array[String]) {
println("Hello, world!")
}
}

3. Rust

Descripción/Origen:
Rust es un lenguaje que apareció por primera vez el año 2010, notablemente joven pero de gran ambición, de hecho la versión más estable v.1.0.0 fue lanzada hace poco (el 05 de Mayo de 2015). Fue un proyecto de Graydon Hoare, un empleado de Mozilla que muy pronto tuvo apoyo y fue esta misma empresa quien lo patrocinó y generó la comunidad de desarrolladores Rust(junto a los desarrolladores interesados a lo largo del mundo). La filosofía de este lenguaje es clara "Lenguaje diseñado para ser seguro, concurrente, rápido y práctico". Aquí está el repositorio para que dejes tu huella.
Características:
  • Lenguaje funcional, compilado y concurrente
  • Fuertemente inspirado en C++(Performance), Erlang(Concurrencia) y OCaml(Tipado)
  • Lenguaje inmutable por defecto
  • Puede interoperar con C
  • Es seguro(de entre muchos motivos, por manejar eficientemente memoria, punteros, etc.)
Caso de uso:
El caso más notable de este lenguaje en producción es Servo, un motor de navegador web creado por Mozilla de la mano de Samsung. Diseñado para sacar provecho al máximo de las bondades del paralelismo y los múltiples núcleos. A pesar que el proyecto aún sigue en desarrollo, se puede notar el interés de llevar al tope de optimización a los navegadores de cualquier tipo, en especial a los de smartphone.
Es muy probable que veamos más ejemplos de proyectos implementados en este lenguaje en el futuro, es cuestión de tiempo y gustos. Una vez leí que en la actualidad un sistema operativo puede ser creado desde cero en Rust y sería muchísimo más eficiente y adecuado a la época a comparación de C, pero si queremos que pase eso tendrían que pasar otros 20 años para que toda una comunidad de programadores de todo el mundo apoyen a hacer realidad un proyecto como este, además de tener que madurar muchísimo más el lenguaje; el tiempo decidirá su futuro, es bueno saber que está bajo el respaldo de Mozilla.
Código:
fn main() {
println!("Hello, world!");
}
4. D
Descripción/Origen:
Si piensas que D es un intento de hacer la siguiente versión de C o C++ estás en lo correcto. Este fue un proyecto por Walter Bright que decidió trabajarlo allá por el año 2001 con el enfoque de ser hacer reingeniería al lenguaje C++, a pesar de esto D es un lenguaje muy distinto ya que tiene inspiraciones de Java, Python, Ruby, C#. Alcanzó su versión 1.0 el año 2007 y para el día de hoy ya se encuentra en la versión 2. También puedes colaborar con tu granito de arena a la comunidad de D aquí.
Características:
  • Lenguaje compilado, multiparadigma, procedural y funcional; exactamente igual a C++
  • D desmuestra su poder desde simples scripts hasta proyectos gigantes
  • Sintaxis que pretende ahorrar trabajo y hacer las cosas eficientes
  • D se compila de manera natural el código nativo
  • Usa un enfoque innovador de concurrencia
Caso de uso:
Una vez más Facebook se hace presente con dos proyectos en producción que están escritos enteramente en D. Estos son Warp y Flint, uno es un preprocesador de C y C++ y el otro es un estilizador de código. Uno de sus programadores(el cual es uno de los creadores de D) mencionaba que D les provee una experiencia mejor comparada a C++ y que el proyecto es muy usado dentro de la compañía. Aquí puedes leer su testimonio.
Código:
import std.stdio;
int main(char[][] args)
{
writef("Hello world!");
return 0;
}
Conclusiones:
TL;DR
Hemos visto cuatro lenguajes de programación(Erlang, Scala, Rust y D) que a pesar de no ser muy conocidos en la comunidad demuestran ser muy útiles para satisfacer la necesidad de algún tipo de problema de aplicación. De este modo podemos decir que un lenguaje de programación popular no significa que pueda ser el mejor en algo, simplemente le da más oportunidad a ser juzgado y por consecuencia mejorado.
No hemos mencionado lenguajes como Haskell, Dart, Go, F# o Perl porque ciertamente son más conocidos y muy usados en distintos proyectos que dan vida a la industria tecnológica de hoy día. Lenguajes como Elixir, Clojure, OCaml, Groovy y muchísimos más no son muy conocidos pero están ahí para hackearlos, experimentar y aprender de ellos pues la mayoría son de código abierto.
Así llegamos al fin del post. Quizás hayan surgido dudas con algunos términos utilizados para describir a los lenguajes como Programación Funcional; no te preocupes pues hablaré de esto en un futuro post. Termino citando la frase del capo Bjarne Stroustrup(creador de C++):
"Existen sólo dos tipos de lenguajes de programación: aquellos del cual la gente se queja y las que nadie usa" - Bjarne Stroustrup