15

私はしばらくの間、C++ でソケット プログラミングを行ってきましたが、エラーの処理、データのシリアル化/逆シリアル化などのために同じコードを書かなければならないことにうんざりしていました。

分散システムを最高レベルでサポートするプログラミング言語はありますか?

4

5 に答える 5

22

ウィキペディアで説明されているErlang :

分散型、耐障害性、ソフト リアルタイム、ノンストップ アプリケーションをサポートするために Ericsson によって設計されました。

また、彼らのマニュアルのDistributed Erlangセクションも読みたいと思うかもしれません。

ただし、Erlang は関数型言語であり、C++ と比べてかなり異なる考え方が必要になることに注意してください。

于 2010-07-23T22:43:46.637 に答える
15

Google の Go-Lang はかなり新しい言語です。少なくともherokuの人々によると、その多くの属性の中で、スケーラブルで一貫した信頼できる動作を実現するために、多くのメッセージキューを必要とする大規模な分散システムにいつか適しているようです.

Go は並行性の問題、言語内のプリミティブのスレッド化などに重点を置いているようです。これはおそらく、分散システムの出発点として必要ではありますが、十分ではありません。おそらく彼らの考えはあなたに役立つでしょう。分散システムに対する Go-lang のサポートを「ファーストクラス」とは呼びませんが、Go のライブラリと言語プリミティブを使用して、ファーストクラスの分散システム フレームワークを構築することが可能であると言えます。

更新: 数年後、私は Go にあまり感心しなくなりました。作者側の悲しく限定された考えに苦しんでいると思います。フォルトと例外処理に関するその決定は逆行し、言語を使用できなくしていると思います。

Update-2016: 私は実際に Go に再び感銘を受けました。私は今、大規模なチーム開発の観点から、N-階乗の実装オプションを持つことが N-階乗の異なるコーディングターピットにつながると考えています。少なくとも、Go にはラブレア スケールのターピットはなく、特定の従来のマッドワローしかないようです。彼らは絶対にタブが大好きで、あなたがそれらを十分に愛していない場合は、コードに挿入してくれます.

于 2011-05-10T15:28:00.283 に答える
4

Bloomは、分散プログラミング用の新しいドメイン固有言語です。現在のアルファ リリースは Ruby に組み込まれており、アーリー アダプターを対象としています。Bloom は、「CALM」分析に関する新しい研究を活用して、コード内の分散された一貫性と調整の問題を特定するツールを提供します。

于 2011-05-10T02:24:24.987 に答える
1

Parallel Pythonは、SMP (複数のプロセッサまたはコアを備えたシステム) およびクラスター (ネットワーク経由で接続されたコンピューター) で Python コードを並列実行するためのメカニズムを提供する Python モジュールです。

特徴:

  • SMP およびクラスターでの Python コードの並列実行
  • ジョブベースの並列化手法を理解し、実装しやすい (シリアル アプリケーションを並列に変換しやすい)
  • 最適な構成の自動検出 (デフォルトでは、ワーカー プロセスの数は有効なプロセッサの数に設定されます)
  • プロセッサの動的割り当て (ワーカー プロセスの数は実行時に変更可能)
  • 同じ機能を持つ後続のジョブのオーバーヘッドが少ない (オーバーヘッドを減らすために、透過的なキャッシュが実装されています)
  • 動的負荷分散 (ジョブは実行時にプロセッサー間で分散されます)
  • 耐障害性 (ノードの 1 つに障害が発生した場合、タスクは他のノードで再スケジュールされます)
  • 計算リソースの自動検出
  • 計算リソースの動的割り当て (自動検出とフォールト トレランスの結果)
  • ネットワーク接続用の 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 に答える