我做过一些Java编程,也做过很少的C和PHP编程。最近我开始学习Python,因为它似乎很有趣。
但有几篇文章似乎指出Python不适合并发编程。而且与那些具有编译器的语言相比,它的速度也更慢。我也喜欢静态类型语言的优点,但Python是动态类型的。所以我的问题是,有没有一种语言可以满足以下标准。
1)有一个解释器(为了更快的开发)
2)有一个编译器(因为编译后的代码会运行得更快)
3)具有面向对象能力
4)静态类型
我遇到了满足上述条件的OCaml。但是上面的帖子让我相信OCaml不适合并发编程。所以第五个标准是
5)适合并发编程。
附言:我不是编程语言的专家,所以如果我上面的任何观察都是错误的,请容忍我。
发布于 2012-04-11 03:49:38
是的,OCaml适用于并发编程。它确实有一个Thread模块,允许您像在Java语言中那样编写网络应用程序。
请注意,它目前不支持真正的并行性(您不会有两个线程并行运行OCaml代码),但这并不重要,因为OCaml比许多其他语言快得多(例如,在QuadCore上,语言快照显示OCaml的性能甚至优于具有多核功能的Haskell )。
发布于 2012-04-11 05:55:54
OCaml适用于并发程序设计。标准库支持两种concurrency模型:具有共享内存的线程(使用mutexes和condition variables进行同步),以及基于John Reppy's Concurrent ML的events。
OCaml不支持对称多处理器并行。运行时在单个处理器上执行。如果您希望利用多核计算机,则需要在每个处理器上至少运行一个运行时,并在运行时之间使用消息传递。消息传递具有更高的延迟,但比共享内存更难正确处理。一个额外的好处是,程序可以分布在网络上的多台机器上,除了运行时在启动时找到彼此的方式之外,不需要更改任何东西。
JoCaml是OCaml的扩展,具有更好的并发和分布模型( join calculus)。它不像官方的OCaml发行版那样完美,但它的优点是提供透明的通信(在通道上发送消息,而不必担心另一端是否在同一运行时中,甚至在同一台机器上)和一个主要是类型化的框架来在多个程序之间通信。
发布于 2012-04-12 16:20:24
根据你所说的适合并发编程的意思,我推荐使用OCaml或标准ML (Standard ML):
请注意,无论使用哪种解决方案,您都将开始使用类型推断!一旦你习惯了,用任何语言编程都会让你流泪!;)
https://stackoverflow.com/questions/10083362
复制相似问题