符合这个标准的语言?

2024-06-10 15:17:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我做过一些Java编程,也做过很少的C和PHP编程。最近我开始学习Python,因为它看起来很有趣。在

但是在SO上的一些帖子似乎指出Python不适合并发编程。而且与那些有编译器的语言相比,速度也慢。我也喜欢静态类型语言的优点,但是Python是动态类型的。所以我的问题是,有没有一种语言可以满足以下条件。在

1)有翻译(为了更快的开发)

2)有编译器(因为编译后的代码会运行得更快)

3)具有OO功能

4)静态类型

我遇到了满足上述标准的OCaml。但是在SO上的帖子让我相信OCaml不适合并发编程。所以第五个标准是

5)适合并发编程。在

注:我不是编程语言方面的专家,所以如果我的上述观察有任何错误,请容忍我。在


Tags: 语言类型标准so编译器编程静态动态
3条回答

OCaml适合并发编程。标准库支持两个concurrency模型:具有共享内存的线程(使用mutexes和{a3}进行同步),以及基于John Reppy's Concurrent MLevents。在

OCaml不支持对称多处理器并行。运行时在单个处理器上执行。如果要利用多核计算机,则需要为每个处理器至少运行一个运行时,并在运行时之间使用消息传递。消息传递具有更高的延迟,但比共享内存更难获得正确的消息传递。作为额外的好处,程序可以在网络上的多台机器上分发,除了运行时启动时彼此查找的方式之外,没有任何改变。在

JoCaml是OCaml的扩展,具有更好的并发和分发模型(即join calculus)。它不像官方的OCaml发行版那样精巧,但它的优点是提供透明的通信(在一个通道上发送消息,而不必担心另一方是否在同一个运行时中,甚至是在同一台机器上)和一个在多个程序之间通信的主要类型化框架。在

是的,OCaml适合并发编程。它确实有一个Thread模块,允许您按照在Java中那样编写网络应用程序。在

请注意,它目前不支持真正的并行性(您不会有两个线程并行运行OCaml代码),但这并不重要,因为OCaml比许多其他语言快得多(例如,在一个四核上,语言枪战显示OCaml在多核功能方面甚至优于Haskell)。在

根据您对适合并发编程的的意思,我推荐OCaml或SML(标准ML):

  1. 多线程,不必等待I/O(networking/file system/);以OCaml为例——它的编译器生成非常快速的代码,并且有很多优秀的库
  2. 如果并发意味着本机线程允许您在同一台机器上使用同一个共享内存段中的多个内核,那么就以SML(polyml)为例——它有一个不错的编译器,并且支持本机线程

请注意,无论使用哪种解决方案,都将开始使用类型推理!一旦你习惯了,用任何语言编程都会让你哭泣!;)

相关问题 更多 >