是学历的问题。
使用函数式语言进行函数式编程的优点是胡萝卜加大棒。胡萝卜是函数式语言具有函数式语法和语义,并带有函数库。关键是函数式语言可以迫使您遵守某些标准。如果你用非 FP 语言做 FP,你就不会得到这些。您必然会与对状态友好的标准库作斗争,并且必须自我监督以确保您不会创建状态。
在 C 中做 OO 的类比是一个很好的类比。有时您的约束条件使得 C 是正确的选择,而 OO 结构也是正确的选择。GTK 就是一个很好的例子。如果没有 OOP,很难编写 UI 工具包。但是,这意味着您正在承担通常由编译器完成的工作。如果没有句法和语义支持,一些在一种语言中很容易的事情在一种语言中变得困难或不可能。例如,我从未见过模拟多重继承的 C 项目。只是体力劳动太多了。
如果您为了并行性而在您的 OO 代码中采用函数式风格,那么您很可能会在没有太多痛苦的情况下获得您所追求的好处。但是您仍然会错过编译时保证,即您的代码是纯粹的、对 FP 的语言内支持以及 FP 编译器如今能够进行的令人印象深刻的优化。这是一个权衡,所以这是一个必须根据具体情况做出的决定,而且只有你可以做出。
至于 OOP 是否是 FP 的超集,我什至认为这个概念没有意义。在表达程序方面,他们都是完全有能力的。您可以在 FP 语言中实现 OO 语言,反之亦然。有时一个更接近问题域,有时另一个。无论如何,我认为你真正的问题是是否一定要喜欢 FP,答案是,不;用你喜欢的。
我认为您还应该考虑检查 Actor 模型,因为它更适合 OO 而不是状态不友好(只是共享状态不友好),同时仍然产生可伸缩性/并行性的好处。