2014-12-02 195 views
-1

我们正在考虑在我们的项目中使用函数式语言。我试图收集关于哪些功能语言可以开始的点(我们主要是java开发者)。我们正在考虑使用Ocaml。 我试图从他们的网站学习ocaml.org。对于那些在工作场所使用Ocaml的人,我有以下问题。Ocaml学习资源

  1. Ocaml与Java相比能减少代码行吗?
  2. 你使用什么编辑器?
  3. 我看到有很多Ocaml library实现-电池,核心等。一开始只能使用电池吗?
  4. 你使用Ocaml Core(简街)? 与标准差异有何区别?

一开始我们计划在很小的范围内使用Ocaml,可能在室内工程。

+1

我想,这个问题不是那么糟糕,除了标题。它不是要求找到一个工具,而是要提供一些指导方针,并与经验分享。尽管答案可以是自己的观点,但是threre仍然是一些可以共享的社区知识,比如“核心”与其他图书馆的比较,不同编辑的支持程度等等...... – ivg 2014-12-02 11:40:26

+0

没错。我不是要求资源或书籍或比较。我期待人们与Ocaml的经验。由于语言几乎和Java一样古老,我相信在Ocaml大量使用的生产系统中会有相当大的系统。 – Chirota 2014-12-04 16:27:08

回答

4

在Vector Fabrics中,我们广泛使用OCaml。我们认识到函数式编程可能给我们的工程活动带来的好处(我们主要构造用于分析C和C++程序的软件工具),我们认为Haskell和OCaml都是可以使用的语言。最后,我们决定采用OCaml,主要是因为它的执行模式更简单(热切评估与Haskell的懒惰评估),因此对于程序员来说,推断程序行为对于不需要函数式编程背景的程序员来说可能更简单一些(我们特别关注计划的空间行为推理,有时甚至是专家,在Haskell中也颇具挑战性)。

OCaml允许你选择性地“逃避”到命令式的,甚至是面向对象的编程,这有时会派上用场,但这并不是我们推荐给程序员的东西,因为它是日常编程的好习惯。我们的基本原理是:一旦你采用了函数式编程语言,你最好用它来进行函数式编程,否则你很容易就会为(为此目的)笨拙的语法编写命令式和面向对象的程序。毕竟,如果你遇到问题,那么面向对象编程的领域就更好了,那么你最好选择一种Java更适合的语言。

回答您的问题:

  1. 是否ocaml的减少代码行相比,说的Java?是的,但只有确实采用编程的“功能风格”。另外,请注意:函数式程序可以非常简洁,但有时可能会忽略算法固有的复杂性。
  2. 你使用什么编辑器?我们主要使用emacs和vim等通用编辑器。
  3. 我已经看到,有很多Ocaml库实现 - 电池,核心等。在开始时只能使用电池吗?电池使一个很好的,可以说是功能强大的标准库(但核心也是如此)。根据您的问题域,您可能需要使用自己的实用程序库扩展标准库。
  4. 您是否使用Ocaml Core(Jane Street)?与标准相比有何​​不同?我们不使用它,但请参阅,例如What are the pros and cons of Batteries and Core?

请注意,这些问题有很多可能的答案,我已经在很大程度上仅从Vector Fabrics角度回答了这些问题。实际上,您的问题对于堆栈溢出可能有点太宽泛。