首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一种满足这个标准的语言?

一种满足这个标准的语言?
EN

Stack Overflow用户
提问于 2012-04-10 13:09:12
回答 7查看 442关注 0票数 2

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

但有几篇文章似乎指出Python不适合并发编程。而且与那些具有编译器的语言相比,它的速度也更慢。我也喜欢静态类型语言的优点,但Python是动态类型的。所以我的问题是,有没有一种语言可以满足以下标准。

1)有一个解释器(为了更快的开发)

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

3)具有面向对象能力

4)静态类型

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

5)适合并发编程。

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

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2012-04-11 03:49:38

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

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

票数 5
EN

Stack Overflow用户

发布于 2012-04-11 05:55:54

OCaml适用于并发程序设计。标准库支持两种concurrency模型:具有共享内存的线程(使用mutexescondition variables进行同步),以及基于John Reppy's Concurrent MLevents

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

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

票数 5
EN

Stack Overflow用户

发布于 2012-04-12 16:20:24

根据你所说的适合并发编程的意思,我推荐使用OCaml或标准ML (Standard ML):

  1. 多线程无需等待I/O (网络/文件系统/..);以OCaml为例--它的编译器生成非常快的代码,并且有很多优秀的库
  2. 如果并发意味着本机线程,允许您在同一共享内存段中使用一台机器上的多个内核;以SML (polyml)为例--它有一个不错的编译器,并且支持本机线程

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10083362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档