2009-08-21 10 views
17

Hola me gustaría elegir 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 mojarme los pies por las siguientes razones:Erlang vs OCaml (el mejor lugar para encajar)

1) Trabajo principalmente en el servidor back-end del servidor web 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 no trabaja en eso para su trabajo diario ahora. Mantiene varias bibliotecas). Así que pensé que podría ser un buen recurso si aprendo OCaml.

Mis intereses se centran principalmente en sistemas distribuidos (mi trabajo actual es un trabajo de desarrollo de middleware) y 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 volver para hacer algún trabajo de modelado financiero quizás algún tiempo después)

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

Gracias

+0

Soy un programador de Erlang y creo que es "fácil" construir sistemas "reales" en Erlang. Sistemas con buena confiabilidad, estabilidad, latencia, etc. Sistemas que pueden manejar muchos clientes/clientes y aún así tener una arquitectura sencilla y simple (aunque yo no sabría nada de OCaml, lo publico solo como un comentario). –

Respuesta

6

Ocaml es un gran lenguaje - uno de mis favoritos - pero si su interés se distribuye sistemas de lo Recomendaría ir con Erlang, que está muy por delante de los otros lenguajes de FP con respecto a los sistemas distribuidos (aunque hay una rama de Ocaml llamada Jocaml que tiene algunos aspectos interesantes).

Ocaml es más débil incluso cuando solo se 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.)

2

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

3

Si usted tiene un compañero de trabajo que es "muy buena" con OCaml entonces suena como que tiene un gran recurso suponiendo que s/él está dispuesto a responder tus 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 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 actores 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.

5

Creo que Ocaml es una gran 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.

Tenga en cuenta, sin embargo, 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).

Cuestiones relacionadas