在我看来,静态类型和函数式语言非常适合并行计算。由于断言强类型约束,例如函数的功能纯度应该很容易。此外,这些编程语言已经非常适合计算繁重的程序类型,这些程序可以从数据并行中获益。
然而,似乎除了Haskell之外,其他强类型函数语言都不支持操作系统级线程来支持它们的并行性。实际情况是,Haskell是现代唯一支持此类事物的语言,并且任何ML系列语言都不能在其他静态类型语言中提供良好的线程支持吗?
答案 0 :(得分:0)
我对Haskell了解不多,但我知道Erlang在并发方面做得很好。但是,Erlang是一种动态类型语言,并发性是用编程语言处理的,而不是在操作系统中处理的。
它适用于并行编程,因为它创建了可以通过消息传递进行交互而不需要使用锁的并行进程集。
对于那些不熟悉Erlang的人,这里是语言介绍的link。
还有Scala,它集成了函数式编程和面向对象编程的功能。 Scala在Java VM上运行,线程使用基于事件的模型进行通信。这可能是您正在寻找的操作系统级线程的指示器。此外,它还内置了对actor model的支持。
有关于Scala和多核系统的book,您应该看一下。
答案 1 :(得分:0)
在Frege中,您可以使用fork / join Java API,这是一篇涵盖它的博客文章:http://fregepl.blogspot.de/2011/09/parallelism-in-frege-employing-forkjoin.html