15

我已经在 C++ 中进行了一段时间的套接字编程,并且有点厌倦了必须编写相同的代码来处理错误、序列化/反序列化数据等。

有没有对分布式系统提供一流支持的编程语言?

4

5 回答 5

22

Erlang,如Wikipedia所述:

它由爱立信设计,旨在支持分布式、容错、软实时、不间断的应用程序。

您可能还想阅读他们手册的Distributed Erlang部分。

但是,请注意,Erlang 是一种函数式语言,与 C++ 相比,它需要一种截然不同的思维范式。

于 2010-07-23T22:43:46.637 回答
15

来自 Google 的 Go-Lang 是一种相当新的语言。似乎在它的众多属性中,有朝一日它可能适用于需要大量消息队列以实现可扩展的一致和可靠行为的大型分布式系统,至少根据heroku的这些人的说法。

Go 似乎专注于并发问题、语言中的线程原语等等,这对于分布式系统来说可能是一个必要但不够充分的起点。也许他们的想法会对你有所帮助。我不会将 Go-lang 对分布式系统的支持称为“一流”,而是说可以使用 Go 的库和语言原语构建一流的分布式系统框架。

更新:几年后我对 Go 的印象不那么深刻了。我认为它的作者有一些悲伤和有限的想法。我认为它对故障和异常处理的决定是倒退的,并且使该语言无法使用。

2016 年更新:我实际上再次对 Go 印象深刻。我现在认为在大型团队开发方面,拥有 N 因子实现选项会导致 N 因子不同的编码 tarpit。至少 Go 似乎没有 labrea 规模的沥青坑,只有某些传统的泥坑。他们绝对喜欢标签,如果你不够爱它们,他们会为你将它们插入你的代码中。

于 2011-05-10T15:28:00.283 回答
4

Bloom是一种用于分布式编程的新领域特定语言。当前的 alpha 版本嵌入在 Ruby 中,面向早期采用者。Bloom 利用对“CALM”分析的新研究来提供工具来查明代码中的分布式一致性和协调问题。

于 2011-05-10T02:24:24.987 回答
1

Parallel Python是一个 Python 模块,它提供了在 SMP(具有多个处理器或内核的系统)和集群(通过网络连接的计算机)上并行执行 Python 代码的机制:

特征:

  • 在 SMP 和集群上并行执行 python 代码
  • 易于理解和实现基于作业的并行化技术(易于并行转换串行应用程序)
  • 自动检测最优配置(默认工作进程数设置为有效处理器数)
  • 动态处理器分配(可以在运行时更改工作进程的数量)
  • 后续同功能作业开销低(实现透明缓存降低开销)
  • 动态负载平衡(作业在运行时在处理器之间分布)
  • 容错(如果其中一个节点失败,任务会重新安排在其他节点上)
  • 计算资源的自动发现
  • 计算资源的动态分配(自动发现和容错的结果)
  • 基于 SHA 的网络连接身份验证
  • 跨平台可移植性和互操作性(Windows、Linux、Unix、Mac OS X)
  • 跨架构可移植性和互操作性(x86、x86-64 等)
  • 开源

通过查看集群的快速入门指南,您可以快速了解代码的外观。

于 2010-07-23T23:39:54.103 回答
0

Reia是一种分布式系统的脚本语言:

Reia 旨在以一种让普通程序员更容易理解的方式展示 Erlang 的强大功能。它旨在将 Ruby(一种易于编程的语言)的美丽和简单带到 Erlang(一种很少有人认为使用起来容易或有趣的语言)。

于 2010-07-23T22:58:19.293 回答