Erlang vs OCaml(最适合的利基市场)

问题描述 投票:0回答:5

嗨,我想学习一种 FP 语言(当你在一个不需要你学习太多的职位上工作时,这总是很痛苦),经过一些研究,我觉得 Erlang 和 OCaml 是我最喜欢的两种语言真的很喜欢弄湿我的脚,原因如下:

1) 我主要从事 C++ 的高可用性 Web 服务器后端系统。我听说 Erlang 在可伸缩性和容错方面是一个很好的解决方案。虽然我不认为我现在的公司会有任何 Erlang 项目,但我觉得 Erlang 可能是我长期职业发展的好语言。

2) 我有一个非常擅长 OCaml 的同事,我的意思是他真的很擅长它(但他现在的日常工作并不在这方面工作。他维护着几个库)。所以我想如果我学习 OCaml,他可能是一个很好的资源。

我的兴趣主要集中在分布式系统(我目前的工作是一些中间件开发工作)和高性能计算(猜猜是什么,我在研究生院研究了几年,特别是金融应用程序中的 PDE——所以我总觉得我可能会回去做一些金融建模工作,也许稍后)

有什么建议吗?请不要建议“两者都学”,因为我没那么聪明:-)

谢谢

erlang ocaml functional-programming
5个回答
8
投票

Ocaml 是一种很棒的语言——我最喜欢的语言之一——但是如果你对分布式系统感兴趣,我建议你使用 Erlang,它在分布式系统方面领先于其他 FP 语言(尽管有一个Ocaml 的分支称为 Jocaml,它有一些有趣的方面)。

Ocaml 考虑到它的底层架构,即使只看并行性也较弱。恕我直言,Haskell 和 Clojure 在这里都有更好的故事。 (也就是说:一旦你掌握了一种 FP 语言,你就可以很容易地将基本原理应用到其他语言中,并且它们在未来可能会有用。Scala 和 Clojure 都可以凭借JVM。)


6
投票

我认为 Ocaml 是开始使用 FP 的好方法,一旦掌握了基本的 FP 概念,Erlang 就不是很难。

但是 'aneccodeal' 的建议非常棒——也就是说,如果你对 Ocaml 感兴趣并且有一个已经很擅长它的朋友,一定要为它开发一个并发(也许是 MPI)库。

但是请记住,使 Ocaml 并发的障碍之一是缺乏并发垃圾收集(或者我已经读过)。


3
投票

如果你有一个对 OCaml “非常好”的同事,那么假设他/她愿意回答你的问题,这听起来像是你有很好的资源。当周围有知识渊博的人时,学习起来总是更容易,如果遇到困难,您可以提出问题。

是的,OCaml 在并行性方面确实没有最好的故事,但是有一些方法可以在 OCaml 中获得并行性(基于 fork 的似乎是最常见的 - checkout prelude.ml,其中包括类似并行映射的东西: http://github.com/kig/preludeml/tree/master)。此外,Erlang 的基于 Actor 的并发似乎很容易在其他语言中复制。也许您和您的同事可以合作一个项目,为 OCaml 开发一个基于 Actor 的并发库?这会给你一个很好的学习项目,你的同事可能会觉得有趣,可以和你一起工作……此外,你最终可能会创造出对整个 OCaml 社区有用的东西。


2
投票

我也会考虑看看 F#(尤其是当 VS 2010 出来的时候)。 有了一个不错的 IDE,学习一门新语言会更容易、更方便。 F# 和 OCaml 非常相似,您可以在其他 SO 线程中看到(例如here


0
投票

虽然 Erlang 可能比 Ocaml 执行得慢,但它仍然有它的优势。例如,如果速度不是您的首要任务,您可以从 Erlang 的 OTP 和轻量级过程中受益。

© www.soinside.com 2019 - 2024. All rights reserved.