与一些量化分析师/对冲基金交谈后,我得出结论:他们中的大多数似乎在许多任务中使用自制语言或OCaml。但其中许多人无法回答为什么。
我当然可以理解为什么他们大多不想使用C++,但相比其他脚本语言,比如Python、Ruby等,为什么OCaml在这些用途上更卓越?
与一些量化分析师/对冲基金交谈后,我得出结论:他们中的大多数似乎在许多任务中使用自制语言或OCaml。但其中许多人无法回答为什么。
我当然可以理解为什么他们大多不想使用C++,但相比其他脚本语言,比如Python、Ruby等,为什么OCaml在这些用途上更卓越?
例如,可以查看编程语言大赛以进行速度比较:
现在,我们都听说过“谎言、该死的谎言和统计数字”,因此建议持有怀疑态度——但这是一个相当不错的比较。归根结底,重要的是使用自己的问题和数据完成工作。
OCaml vs Python
,而是针对 OCaml vs Haskell
。 - Jackson Tale因为它非常快(比C++更简洁)。
我不在那样的地方工作,所以以下只是我在他们的位置可能会这样做的猜测:
相比于像 Ruby 和 Python 这样的语言,它通常要快得多,并且作为一种静态类型的函数式语言,通常更容易推理代码并知道它不包含微妙的错误。 (是的,单元测试也应该有助于捕获这些错误,但额外的保证您的财务数字没有被搞砸是很好的。)此外,函数式编程与数学密切相关,比大多数高级语言范例更加紧密(例如,没有面向对象的数学分支),因此它擅长建模他们实际在做什么。
相比Python/Ruby,F#的平凡并行化更容易实现。虽然Caml/OCaml的原因不同,但也应该是如此。
尽管我很喜欢Ruby,但它不是我处理大量数学或聚合任务的首选,而且Python和Ruby都没有真正支持多线程。
模式匹配的简洁性以及对不可变性的偏好(在Ruby中难以强制执行,在Python中略微容易但仍然比基于ML的语言难)对于大数据集的计算非常有价值。