Erlang vs OCaml(适合的最佳利基)

Erlang vs OCaml(适合的最佳利基),erlang,ocaml,functional-programming,Erlang,Ocaml,Functional Programming,嗨,我想学一门FP语言(当你在一个不需要你学很多东西的职位上工作时,这总是一件痛苦的事),在做了一些研究之后,我觉得Erlang和OCaml是我非常想学习的两种语言,原因如下: 1)主要研究了高可用性Web服务器后端系统在C++中的应用。我听说Erlang在可伸缩性和容错性方面是一个很好的解决方案。虽然我不认为我现在的公司会在Erlang有任何项目,但我觉得Erlang可能是我长期职业发展的一种好语言 2) 我有一位同事非常擅长OCaml,我的意思是他非常擅长OCaml(但他现在在日常工作中不

嗨,我想学一门FP语言(当你在一个不需要你学很多东西的职位上工作时,这总是一件痛苦的事),在做了一些研究之后,我觉得Erlang和OCaml是我非常想学习的两种语言,原因如下:

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

2) 我有一位同事非常擅长OCaml,我的意思是他非常擅长OCaml(但他现在在日常工作中不做这方面的工作,他维护着几个图书馆)。所以我认为如果我学习OCaml,他可能是一个很好的资源

我的兴趣主要集中在分布式系统(我目前的工作是一些midldle软件开发工作)和高性能计算(你猜怎么着,我在研究生院做了几年关于它的研究,特别是金融应用中的PDE——所以我总觉得我可能会在以后某个时候回去做一些金融建模工作)

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


谢谢

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


考虑到Ocaml的底层体系结构,即使只考虑并行性,Ocaml也较弱。Haskell和Clojure在这里都有更好的故事,imho。(这样说:一旦你得到了一个FP语言,你就可以很容易地把基本原理运到其他语言,而且它们在将来可能是有用的。斯卡拉和Culjure都可以通过JVM来悄悄地进入组织。)

< P>我也会考虑看F*(特别是当VS 2010不在的时候)。 使用一个好的IDE,学习一门新语言会更容易、更方便。
F#和OCaml非常相似,正如您在其他SO线程中所看到的(例如)

如果您有一位对OCaml“非常好”的同事,那么如果他/她愿意回答您的问题,听起来您有很好的资源。如果周围有一个知识渊博的人,如果你陷入困境,你可以问他一些问题,那么学习总是比较容易的


是的,当谈到并行性时,OCaml确实没有最好的故事,但是有一些方法可以在OCaml中获得并行性(基于fork的似乎是最常见的-checkout prelude.ml,其中包括类似parallel map:)。此外,Erlang基于参与者的并发性似乎很容易在其他语言中复制。也许你和你的同事可以合作一个项目,为OCaml开发一个基于参与者的并发库?这会给你一个很好的学习项目,你的同事可能会觉得和你一起工作很有趣。。。此外,您最终可能会为整个OCaml社区创建一些有用的东西。

我认为OCaml是开始使用FP的一个很好的方法,一旦您了解了基本的FP概念,Erlang就不是很难了

但是来自“Anecodeal”的建议非常棒——也就是说,如果您对Ocaml感兴趣,并且有一位在Ocaml方面已经很在行的朋友,那么一定要为它开发一个并发(可能是MPI)库


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

我是一名Erlang程序员,我认为在Erlang中构建“真正的”系统“很容易”。具有良好可靠性、稳定性、延迟等的系统。这些系统可以处理许多客户机/客户,并且仍然有一个很好且简单的体系结构(虽然我不知道OCaml,所以我仅将此作为评论发布)。