翻訳: 同期的非対称性と非同期的対称性 | Ouobpo

翻訳: 同期的非対称性と非同期的対称性

 gregors-ramblings-jaプロジェクトにeverpeace君が参加してくれました。彼は、「The Core Protocol」の翻訳などもやっている人です。さっそく、記事「"同期的な非対称とか非同期的な対称"って言ってごらん(Can You Say "Synchronous Asymmetry or Asynchronous Symmetry"?)」を翻訳してくれました。

 SOAの世界では、非同期のメッセージングが非常に重要な役割を果たします。オブジェクト指向においても古くから「オブジェクト同士のメッセージのやり取り」こそが本質とされてきたので、SOAにおける「メッセージング」とオブジェクト指向の「メッセージのやり取り」の違いが見出せず、混乱してしまうことがあります。

 私は、オブジェクト指向とSOAとはやはり本質的に異なるパラダイムだと思っていますが、そのポイントがこの記事のいう「同期的非対称性(Synchronous Asymmetry)」と「非同期的対称性(Asynchronous Symmetry)」にあるのではないかと思います。Hohpe氏がたびたび指摘しているように、SOAのアーキテクチャスタイルは「パイプ&フィルタ」であって、同期的非対称性のあるオブジェクト指向のスタイルではないのです。

呼びだしスタックは、あるメソッド"caller"がある他のメソッド"callee"を呼びだすという点で本質的に非対称だ。この時、calleeが実行中の間はcallerは処理を中断していて、calleeの実行が完了すると処理はcallerに戻る。calleeの処理が完了した直後にcallerの処理が確実に続行する事を保証するのが呼び出しスタックだ。また、このcallerとcalleeの非対称性はUMLの表記法にも表われている。

メソッドの呼びだしは実線で描かれ、戻り値は在る場合と無い場合があるが、もしあるなら点線で描かれる。また、仮想計算機やプロセッサレベルでもpush/popペアやcall/retペアという形で非対称性が表われている。このように、メソッドを呼びだしたり、サブルーチンを呼び出したりする事は、メソッドやサブルーチンから値を戻す事とは本質的に違う事なのだ。

つづきは、こちら