20

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

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

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

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

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

谢谢

4

4 回答 4

8

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

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

于 2009-08-24T07:48:32.337 回答
6

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

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

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

于 2009-09-16T20:59:47.537 回答
3

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

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

于 2009-08-25T03:07:09.913 回答
2

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

于 2009-08-24T08:04:53.503 回答