CTMCP 11章:分散プログラミング

第十一章:分散プログラミングです。Oz はネットワーク透過なプログラミングを可能にするとかなんとかで、そういうの得意っぽいです。ちょっとすごいです。

要点

この章では、オープンな分散システムを扱う。以下のように、これはクラスタコンピューティングよりも一般的な分散システムである...(つづき

感想

 ネットワーク(プロセス)間の通信というのはライブラリのレイヤーで明示的に提供されるのが普通だと思うのですが、Oz は言語として分散プログラミングを組み込んでいて、オブジェクトや関数が別プロセスにあろうと別マシンにあろうと言語意味上は変わらない(性能は変わりうる)、ということを実現しています。「ネットワーク透過」というのはネットワークを意識せずに済むというそのままの意味で、そういう理想的な状態をまず考えて可能な限りそれに近づける、というアプローチを取っています。
 Smalltailkのなんかの実装(?)は分散オブジェクトを実装しているらしいですが、ここまでできるのかは分からないです。Rubyでも簡単なクロージャ(Procオブジェクト)を送れたらなーと思うことは非同期処理をしたいときに時々思うのですが、こういうのがあるとすごい素直にやれますね(実装はとても大変でしょうけど)。今は文字列やJSONみたいな静的データしかキューイングできなかったり、gem だと delayed_job みたいにメソッド名と引数を文字列としてキューイングしておいて、処理側プロセスは同じコードをロードして同じ環境を立ち上げて(たぶんそうしてるんだろう)処理するみたいな、相互に何らかの「お約束」をしておく必要があってちょっとめんどくさいですね。