4

私は、スタックレス pythonerlangなど、並列処理や並行処理が組み込まれている言語を使用できる可能性に非常に興奮しています。スケーラビリティとパフォーマンスを実現するための良い/簡単な方法です。

ただし、私は線形/シリアル/OOP/機能的な方法でソリューションを考えることに慣れているため、同時実行を使用する価値のある方法でドメインの問題をキャストするのに苦労しています。多くのことを忘れる必要があるだけだと思いますが、次のことを尋ねると思いました。

  • スタックレスやアーランなどでかなり大きなものを実装しましたか?
  • なぜそれが良い選択だったのですか?良い選択でしたか?もう一度やりますか?
  • あなたの問題のどのような特徴が、並行/並列が正しかったことを意味していますか?
  • 並行性/並列性を利用するために、既存の問題を再キャストしましたか? と
  • もしそうなら、どのように?

彼らが喜んで共有したい経験はありますか?

4

4 に答える 4

4

デスクトップ マシンに単一の CPU が搭載されていた過去には、並列化は「特別な」並列ハードウェアにのみ適用されていました。しかし、最近のデスクトップには通常 2 ~ 8 コアが搭載されているため、並列ハードウェアが標準になっています。これは大きな違いであるため、どの問題が並列処理を示唆するかだけでなく、以前よりも幅広い一連の問題に並列処理を適用する方法も重要です。

並列処理を利用するには、通常、何らかの方法で問題を作り直す必要があります。並列処理は、プレイグラウンドをさまざまな方法で変更します。

  • データの一貫性とロックの問題が発生します。したがって、さまざまなスレッド、プロセス、および計算ノードで処理できる半独立のデータ構造を持つように、問題を整理する必要があります。
  • 並列コンポーネントがジョブを実行する相対的な順序が結果に影響する場合、並列処理は計算に非決定性を導入することもあります。それを防ぎ、さまざまなスケジューリング順序に対して堅牢なアルゴリズムの並列バージョンを定義する必要がある場合があります。
  • マザーボード内の並列処理を超えて、ネットワーク/クラスター/グリッド コンピューティングに入ると、ネットワーク帯域幅、ネットワークのダウン、障害のある計算ノードの適切な管理の問題も発生します。ネットワーク ノードがダウンしたときに計算の一部が失われる状況を処理しやすくするために、問題を修正する必要がある場合があります。
于 2009-02-13T16:41:10.857 に答える
2

オペレーティング システムが登場する前は、アプリケーションを構築する人々が座って、次のようなことについて話し合っていました。

  • ディスクにデータを保存する方法
  • どのファイルシステム構造を使用するか
  • アプリケーションが動作するハードウェア
  • などなど

オペレーティング システムは、「開発者ライブラリ」のコレクションから生まれました。

オペレーティング システムの優れた点は、UNWRITTEN ソフトウェアに特定の特徴があることです。

  • 永久ストレージと話す
  • ネットワークと話す
  • コマンドラインで実行
  • バッチで使用する
  • GUI と話す
  • などなど

オペレーティング システムに移行すると、以前の状態に戻ることはありません。

Erlang/OTP (つまり、Erlang ではない) はアプリケーション システムであり、複数のコンピューターで実行されます。

APPLICATION SYSTEM の優れた点は、UNWRITTEN ソフトウェアが特定の特性を備えていることです。

  • 2 台のマシン間のフェイルオーバー
  • クラスターで作業する
  • などなど…

アプリケーション システムに移行した後は、どちらにも戻れません...

Erlang/OTP を使用する必要はありません。Google はアプリ エンジンに優れたアプリケーション システムを備えているため、言語構文にこだわる必要はありません。

Google App Engine ではなく、Erlang/OTP スタック上に構築する正当なビジネス上の理由があるかもしれません - あなたの会社のビジネス開発担当者があなたに代わって電話をかけます。

于 2009-02-12T22:30:41.400 に答える
1

問題は今後もほぼ同じままですが、実現のための基盤となるハードウェアは変化しています。これを使用するには、オブジェクト間の通信方法 (コンポーネント、プロセス、サービス、どのように呼ぶか) が変わります。メッセージは、直接の応答を待たずに非同期で送信されます。代わりに、ジョブが完了した後、プロセスは送信者に応答を返します。一緒に働く人々のようなものです。

私は現在、Erlang/OTP に基づく軽量化されたイベント駆動型アーキテクチャを設計しています。タイドランドEASと呼ばれています。ここでアイデアと原則を説明しています: http://code.google.com/p/tideland-eas/wiki/IdeasAndPrinciples . 準備はできていませんが、私の言いたいことがわかるかもしれません。

ミュー

于 2009-02-12T14:32:18.493 に答える
0

Erlang は問題を並行して考えさせます。1秒も忘れません。しばらくすると適応します。大きな問題ではありません。ソリューションがすべての小さなコーナーで平行になることを除いて。あなたが微調整しなければならない他のすべての言語。同時であること。そして、それは自然に感じられません。それからあなたはあなたの解決策を嫌うことになります。楽しくない。

Erlang の最大の利点は、グローバル ガベージ コレクションがないことです。それは決して休むことはありません。1 秒間に 10000 ページ ビューがある場合、これは重要なことです。

于 2009-02-12T21:27:09.807 に答える