Erlang vs OCaml(最适合合适的位置)
嗨,我想选择一种FP语言(当你在一个不需要你学习的职位上工作时总是很痛苦),并且在做了一些研究之后,我觉得Erlang和OCaml是我真的喜欢弄湿我的脚,原因如下:
1)我主要在C ++中使用高可用性Web服务器后端系统。 我听说Erlang在可扩展性和容错性方面是一个很好的解决方案。 虽然我不认为我现在的公司会在Erlang有任何项目,但我觉得Erlang可能是我长期职业发展的良好语言。
2)我有一个非常擅长OCaml的同事,我的意思是他非常擅长(但他现在没有为他的日常工作工作,他维护着几个库)。 所以我认为,如果我学习OCaml,他可能是一个很好的资源。
我的兴趣主要集中在分布式系统(我目前的工作是一些midldleware开发工作)和高性能计算(猜猜看,我有几年研究生院的研究,特别是金融应用中的PDE - 所以我总觉得我可能会稍后再回去做一些金融模拟工作)
有什么建议么? 请不要建议“同时学习”,因为我不是那么聪明:-)
谢谢
Ocaml是一种伟大的语言 - 我最喜欢的语言之一 - 但如果您的兴趣是分布式系统,而不是我推荐使用的Erlang,那么在分布式系统方面,Erlang是其他FP语言的先锋和肩膀(尽管有一个分支Ocaml称Jocaml有一些有趣的方面)。
考虑到它的基础架构,Ocaml即使在只考虑并行性时也比较弱。 哈斯克尔和Clojure在这里都有更好的故事,imho。 (也就是说:一旦你获得一种FP语言,你就可以很容易地将其基本原理运用到其他语言中,并且它们在未来可能会有用。Scala和Clojure都可以很容易地凭借JVM)。
我认为Ocaml是开始使用FP的好方法,一旦你掌握了基本的FP概念,Erlang并不是非常困难。
但'aneccodeal'的建议非常棒 - 即,如果你对Ocaml感兴趣并且有一个已经很强大的朋友,那么通过一切手段为它开发一个并发(也许是MPI)库。
但请记住,使Ocaml并发的障碍之一是缺乏并发垃圾收集(或者我已阅读)。
如果你有一个与OCaml“非常好”的同事,那么假设他/她愿意回答你的问题,这听起来像你有一个很好的资源。 如果有人对此有所了解,那么你可以询问你是否陷入困境,这样总是会更容易学习。
是的,OCaml在并行性方面并不是最好的,但OCaml中有很多方法可以获得并行性(基于fork的似乎是最常见的 - checkout prelude.ml,其中包括像并行映射:http ://github.com/kig/preludeml/tree/master)。 另外,似乎Erlang的基于Actor的并发在其他语言中很容易复制。 也许你和你的同事可以在一个项目上开发OCaml的基于Actor的并发库? 这会给你一个很好的学习项目,你的同事可能会发现足够有趣的东西与你一起工作......此外,你最终可以为整个OCaml社区创建一些有用的东西。
链接地址: http://www.djcxy.com/p/79333.html