我做过一些Java编程,也做过很少的C和PHP编程。最近我开始学习Python,因为它看起来很有趣。在
但是在SO上的一些帖子似乎指出Python不适合并发编程。而且与那些有编译器的语言相比,速度也慢。我也喜欢静态类型语言的优点,但是Python是动态类型的。所以我的问题是,有没有一种语言可以满足以下条件。在
1)有翻译(为了更快的开发)
2)有编译器(因为编译后的代码会运行得更快)
3)具有OO功能
4)静态类型
我遇到了满足上述标准的OCaml。但是在SO上的帖子让我相信OCaml不适合并发编程。所以第五个标准是
5)适合并发编程。在
注:我不是编程语言方面的专家,所以如果我的上述观察有任何错误,请容忍我。在
OCaml适合并发编程。标准库支持两个concurrency模型:具有共享内存的线程(使用mutexes和{a3}进行同步),以及基于John Reppy's Concurrent ML的events。在
OCaml不支持对称多处理器并行。运行时在单个处理器上执行。如果要利用多核计算机,则需要为每个处理器至少运行一个运行时,并在运行时之间使用消息传递。消息传递具有更高的延迟,但比共享内存更难获得正确的消息传递。作为额外的好处,程序可以在网络上的多台机器上分发,除了运行时启动时彼此查找的方式之外,没有任何改变。在
JoCaml是OCaml的扩展,具有更好的并发和分发模型(即join calculus)。它不像官方的OCaml发行版那样精巧,但它的优点是提供透明的通信(在一个通道上发送消息,而不必担心另一方是否在同一个运行时中,甚至是在同一台机器上)和一个在多个程序之间通信的主要类型化框架。在
是的,OCaml适合并发编程。它确实有一个
Thread
模块,允许您按照在Java中那样编写网络应用程序。在请注意,它目前不支持真正的并行性(您不会有两个线程并行运行OCaml代码),但这并不重要,因为OCaml比许多其他语言快得多(例如,在一个四核上,语言枪战显示OCaml在多核功能方面甚至优于Haskell)。在
根据您对适合并发编程的的意思,我推荐OCaml或SML(标准ML):
请注意,无论使用哪种解决方案,都将开始使用类型推理!一旦你习惯了,用任何语言编程都会让你哭泣!;)
相关问题 更多 >
编程相关推荐