2012-09-17 38 views
12

Recientemente, he estado buscando profundamente en la Programación funcional. Y con eso llegué a conocer bastante sobre Erlang y su modelo de simultaneidad.Modelo de concurrencia de Erlang vs Scala vs Go

Sorprendentemente (al menos para mí) encontré que (Erlang) se usa en el núcleo de muchas aplicaciones básicas bien conocidas como el Canal de chat de Facebook, el back-end del messenger What's App y aún en los servidores core-online de Call Of Duty. incluso llegué a leer en algunos foros que para sistemas distribuidos que atienden las peticiones web, Erlang es aún más escalable que Node.js o la JVM (no estoy seguro si esa información es exacta)

  • ¿Por qué tenemos casos de, por ejemplo, Twitter migrando de RoR a Scala? Aunque Scala está destinado a ser utilizado con el paradigma funcional, ¿Erlang no sería aún mejor?

  • Otro gran caso que no puedo entender es Google. Es bien sabido (por las presentaciones de Go in the Google I/O 2011) que las aplicaciones centrales están basadas en C++ o Java. Entonces, ¿por qué tendrían que crear Go (golang) si Erlang puede encajar en el rol?

Nota: No me mal. Para mí, está claro que si tienes una sólida formación en Java, por ejemplo, Scala sería un modelo de programación funcional mucho más rápido de aprender que Erlang. Pero estoy poniendo la productividad a un lado aquí, quiero decir.

¿Cuáles serían los puntos fuertes de Erlang que harían que uno lo retomara e invirtiera tanto tiempo en aprenderlo?

Muchas gracias.

+1

Tenga en cuenta que Erlang es muy fácil de aprender (posiblemente difícil de dominar, pero que se aplica a la mayoría de los idiomas). Aún más si estás acostumbrado al paradigma funcional. Al menos en mi universidad (Uppsala) comenzamos estudiando ML el primer año y Erlang, C y Java en el segundo. –

Respuesta

5

Erlang no se adapta a todos los problemas. Sus ejemplos muestran que se usa principalmente para aplicaciones de red (distribuidas). Pero Java y Scala tienen un uso de operación mucho más amplio. Puede construir aplicaciones de escritorio, juegos y mucho más. El lenguaje de programación go es diferente de scala porque le permite una programación imperativa, algo imposible con erlang.

El principal "problema" de erlang es su lenguaje funcional. Muchas personas se adhieren a los lenguajes de programación basados ​​en imperativo c, usando un lenguaje como erlang es como aprender un idioma completamente nuevo.

Si tu problema coincide perfectamente con el dominio erlang, es una de las mejores opciones. Pero no es un lenguaje como Java o Scala el que encaja en muchos más problemas.

+7

Scala también le permite una programación imperativa. – xiefei