erlang ocaml functional-programming

Erlang vs OCaml(el mejor lugar para encajar)



functional-programming (4)

Hola, me gustaría retomar un lenguaje FP (siempre es un dolor cuando trabajas en una posición que no requiere que aprendas mucho), y después de investigar un poco, sentí que Erlang y OCaml son los dos que realmente me gustaría tener. Me gusta mojarme los pies por las siguientes razones:

1) Trabajo principalmente en un servidor back-end de servidor de alta disponibilidad en C ++. Escuché que Erlang es una gran solución en escalabilidad y tolerancia a fallas. Aunque no creo que mi compañía actual tenga ningún proyecto en Erlang, creo que Erlang puede ser un buen lenguaje para mi desarrollo profesional a largo plazo.

2) Tengo un compañero de trabajo que es muy bueno en OCaml, quiero decir que es muy bueno en eso (pero ahora no trabaja en eso para su trabajo diario. Mantiene varias bibliotecas). Así que pensé que podría ser un buen recurso si aprendo OCaml.

Mis intereses se centran principalmente en los sistemas distribuidos (mi trabajo actual es un trabajo de desarrollo de middleware) y la computación de alto rendimiento (adivinen qué, tuve un par de años de investigación de posgrado, en particular PDE en aplicaciones financieras, así que siempre sentí que podría regresar para hacer algún trabajo de modelado financiero quizás algún tiempo después)

¿Alguna sugerencia? Por favor, no sugiera "aprender ambos", ya que no soy tan inteligente :-)

Gracias


Ocaml es un gran lenguaje, uno de mis favoritos, pero si le interesan los sistemas distribuidos, recomendaría ir con Erlang, que está muy por delante de los otros lenguajes de FP en lo que respecta a los sistemas distribuidos (aunque hay una derivación). de Ocaml llamado Jocaml que tiene algunos aspectos interesantes).

Ocaml es más débil incluso cuando solo mira el paralelismo, dada su arquitectura subyacente. Tanto Haskell como Clojure tienen mejores historias aquí, en mi humilde opinión. (Dicho esto: una vez que obtenga un lenguaje FP, podrá llevar los principios fundamentales a otros idiomas con bastante facilidad, y podrían ser útiles en el futuro. Tanto Scala como Clojure podrían infiltrarse fácilmente en las organizaciones en virtud de la JVM.)


Si tiene un compañero de trabajo que es "realmente bueno" con OCaml, parece que tiene un gran recurso suponiendo que esté dispuesto a responder sus preguntas. Siempre es más fácil aprender cuando hay alguien entendido que puedes hacerte preguntas si te quedas atascado.

Sí, es cierto que OCaml no tiene la mejor historia en lo que respecta al paralelismo, pero hay formas de obtener el paralelismo en OCaml (la basada en horquillas parece ser la más común: checkout prelude.ml que incluye cosas como el mapa paralelo: http : //github.com/kig/preludeml/tree/master ). Además, parece que la concurrencia basada en actor de Erlang es bastante fácil de duplicar en otros idiomas. Tal vez usted y su compañero de trabajo podrían trabajar en un proyecto para desarrollar una biblioteca de concurrencia basada en Actor para OCaml? Eso le daría un buen proyecto de aprendizaje que su compañero de trabajo probablemente encontraría lo suficientemente interesante como para trabajar con usted ... además, podría terminar creando algo útil para toda la comunidad OCaml.


Creo que Ocaml es una excelente manera de comenzar en FP, y Erlang no es muy difícil una vez que tienes los conceptos básicos de PF.

Pero la sugerencia de ''aneccodeal'' es fantástica, es decir, si está interesado en Ocaml y tiene un amigo que ya es fuerte en él, desarrolle una biblioteca de concurrencia (quizás MPI) para ello.

Sin embargo, tenga en cuenta que una de las barreras para hacer que Ocaml sea concurrente es la falta de recolección concurrente de basura (o eso he leído).


También consideraría mirar F # (especialmente cuando VS 2010 está fuera). Aprender un nuevo idioma es mucho más fácil y conveniente con un buen IDE. F # y OCaml son muy similares como se puede ver en otros hilos SO (por ejemplo, aquí )