Подтвердить что ты не робот

Erlang vs OCaml (лучшая ниша для подгонки)

Привет, я бы хотел поднять один язык FP (это всегда боль, когда вы работаете в такой ситуации, что вам не нужно многому учиться), и после некоторых исследований я почувствовал, что Erlang и OCaml - это два, которые я "Мне действительно нравится мочить ноги по следующим причинам:

1) Я работаю в основном на серверной серверной системе высокой доступности на С++. Я слышал, что Erlang - отличное решение в области масштабируемости и отказоустойчивости. Хотя я не думаю, что у моей нынешней компании будет какой-то проект в Эрланге, я считаю, что Эрланг может быть хорошим языком для моей долгосрочной карьеры.

2) У меня есть сотрудник, который действительно хорош в OCaml, я имею в виду, что он действительно хорош в этом (но он не работает над этим для своей повседневной работы сейчас. Он поддерживает несколько библиотек). Поэтому я подумал, что он может быть хорошим ресурсом, если я изучу OCaml.

Мои интересы в основном связаны с распределенными системами (моя текущая работа - это работа над разработкой midldle-ware) и высокопроизводительные вычисления (угадайте, что у меня было несколько лет аспирантских исследований на ней, в частности PDE в финансовых приложениях - - так что я всегда чувствовал, что могу вернуться к тому, чтобы сделать некоторые работы по моделированию финансов, возможно, когда-нибудь позже)

Любые предложения? Пожалуйста, не предлагайте "узнать оба", поскольку я не настолько умный: -)

Спасибо

4b9b3361

Ответ 1

Ocaml - отличный язык - один из моих любимых, но если ваш интерес представляет собой распределенные системы, чем я рекомендую поехать с Erlang, который является голова и плечи впереди других языков FP в отношении распределенных систем (хотя там ответвление Ocaml называется Jocaml, в котором есть некоторые интересные аспекты).

Ocaml слабее, даже если смотреть на parallelism, учитывая его базовую архитектуру. И у Haskell, и у Clojure есть лучшие истории здесь, имхо. (Тем не менее: после того, как вы получите один язык FP, вы сможете легко перенести основные принципы на другие языки, и они могут быть полезны в будущем. Оба Scala и Clojure могут легко пробраться в организаций в силу JVM.)

Ответ 2

Я думаю, что Ocaml - отличный способ начать работу в FP, и Erlang не очень сложно, когда у вас есть основные концепции FP.

Но предложение из "aneccodeal" является фантастическим - т.е. если вы заинтересованы в Ocaml и у вас есть друг, который уже силен в нем, обязательно создайте для него библиотеку concurrency (возможно, MPI).

Имейте в виду, однако, что одним из препятствий для одновременного создания Ocaml является отсутствие одновременной сборки мусора (или так я прочитал).

Ответ 3

Если у вас есть коллега, который "действительно хорош" с OCaml, тогда кажется, что у вас отличный ресурс, предполагающий, что он/она готов ответить на ваши вопросы. Всегда легче учиться, когда кто-то знает, что вы можете задавать вопросы, если вы застряли.

Да, верно, что OCaml не имеет лучшей истории, когда дело доходит до parallelism, но есть способы получить parallelism в OCaml (fork-based кажется наиболее распространенным - checkout prelude.ml, который включает в себя такие вещи, как параллельная карта: http://github.com/kig/preludeml/tree/master). Кроме того, кажется, что Erlang Actor на основе concurrency действительно довольно легко дублировать на других языках. Возможно, вы и ваш коллега могли бы работать над проектом по разработке библиотеки concurrency на основе актера для OCaml? Это даст вам хороший учебный проект, который вы, возможно, найдете достаточно полезным для совместной работы с вами... Кроме того, вы могли бы создать что-то полезное для всего сообщества OCaml.

Ответ 4

Я также хотел бы рассмотреть F # (особенно когда VS 2010 отсутствует). Изучение нового языка намного проще и удобнее с хорошей IDE. F # и OCaml очень похожи, как вы можете видеть в других потоках SO (например, здесь)