檜山正幸さんの新しいプロジェクト(?) chimaira が始まっています。最終的には「Chimairaアーキテクチャは、XML技術の一部に対する再構成の試み」ということで、XML 文書の処理や構造設計手法にインパクトを与える仕組みを定義するものになるようです。現在はまだ導入部であり、Chimaira の「コンポーネント・アーキテクチャ部分」に絞っているとのことで、XML の話ではなくプログラミングに纏わる分析/設計例のような話になっていて(多分これから続くであろう話と比較すると)読みやすかったです。
「コンポーネント・アーキテクチャ部分」のことを Janus(ヤヌス:昔ヤヌスの鏡なんてドラマがあったような)と呼ぶそうです。
Janus の話は個人的に趣向している「インターフェイス指向」に合致する部分が多くて大変面白いです。
なぜなら、まず最初にフィルタやパイプの持つインターフェイスの分析から入り、それらを明確な interface として定義しているからです(他は後述)。さまざまな粒度のコンポーネントの役割をざっくばらんに定めて、それらの持つインターフェイス(狭義には in/out、ぶっちゃけると仕様)を決めることを優先し、実装とコンポーネントの繋ぐ作業の独立性を上げようとする「インターフェイス指向」に近いと思います。
Janus ではコンポーネント(と呼んでいるプログラム単位)間のメタ接続方式(in/out, use/provide, ポート数制約等)を明確に規定して、それをベースに実際の接続方式(*)は、メタ接続方式の組み合わせで表現されていくようです。
*:この「コンポーネント間の実際の接続方式」の部分をインターフェイスと呼んで差し支えないと思う。
最終的には、昔 JavaStudio (だったっけ?^^;)といった製品が目指していた「コンセントを繋ぎ合わせてプログラムが出来上がっていく」のに近いものになっていくのだと思います。
(補足)将来の目標として「対称性、極性の導入: 双方向通信を導入し、入力と出力の取り替えも自由に行えるようにする。」というのがあるのでもしかしたら柔らかいインターフェイスが目指されているのかもしれないです。また、「コンポーネント間の構成演算」など、私がまだ理解できていない部分も多々あります。
********
Janus の説明を見ていて、直感的に CSP (Communicating Sequential Processes)が思い浮かびました。CSP はプロセス指向と呼ぶそうです。CSP は並列プログラミングに重点を置いていますが、そのプロセス毎の独立性/自立性や、プロセス間を繋ぐ手法あたりに近いものがあるように思います。以降私が触ったことのある CSP 実装である JCSP と比較(*)しての感想になります。
*:自分の知っている範囲の CSP です。すごく要約すると、多数の自立的な process を channel で繋ぎ合わせてプログラムを構成していくものであると理解しています。この時点で既に理解が間違っている可能性もあります_o_。
Janus と CSP は最終的に実装が出たとしたらかなり概念的に近いものを持ち合わせたものになりそうな気がします(Janus が並列性を前提に置くかどうかは解らないですけど)。ただ、まだ文書が少ない現時点でも言えるであろう決定的な違いとして profile の概念があります。
CSP でのプロセス間の通信の仕組み(channel)は (追記:blocking でバッファなしの) queue です。したがって Janus の説明でいうところの古典的パイプの仕組みだけです(接続の多重度/双方向性の面で異なりますが)。Janus では以下のようにメタ接続方式(これは私が勝手に付けた命名です_o_)の組み合わせを profile として宣言する概念を導入して、interface (ここでは Java での構文としての interface)より一段階高次(メタレベル)の「仕様」を記述できるようにしています。
profile StdFilter {
input:
use TextInput;
output:
use TextOutput;
}
/* 普通のフィルターどおしを繋ぐパイプ */
profile StdPipe {
input:
provide TextOutput;
output:
provide TextInput;
}
CSP では全てのプロセスが任意個の in/out 端子を持っていて、channel はその種類に応じてこれまたいくつかの in/out 端子を持つことになります。これらは上記の Filter / Pipe に対応する概念です。ただ、それら Filter / Pipe そのものを上記のように明示的に宣言可能であるという点が異なります。
また、コンポーネント(CSP ではプロセス)をどう繋ぐかという部分に関して、Janus ではちょっと厳しい制約を課そうとしているようです。CSP はプロセスをどう接続するかは完全に自由なので、大きめのアプリケーションになるとプロセス接続図は複雑な網状になることが予想されます。Janus はコンポーネントをできる限り一次元に近い形で接続し、且つそのパイプラインの向きを決めよという制約が推奨されています。通常、コンポーネント構成は 、GUI 等を考えるとすぐにわかりますが、イベントなどで枝コンポーネントに飛ぶような構成になったりリング状になったりするものです。接続網が複雑になることは大きな問題として記されていますが、どのように一次元的にしていくのかは私にはまだ解っていないので今後が興味深いです。唯一つ私にも理解できるのは、その部分の問題意識として「(理想的には)ラインで結ぶよりレゴブロックのように繋いでいきたい」というあたりでした。ラインが交差してぐちゃぐちゃになるのを避けたいということです。ただ、レゴブロック方式だと開発者はテトリスしなきゃいけなくなる:p、という問題点があるので、檜山さんの提唱する ETB ダイアグラムは矢印を使ったものになっています。
********
雑感としては、なんだろう…。
input/output と use/provide が独立であり外部宣言できるようにしたということが Janus の一つ目のミソなんだろうな、と。おそらく解りやすいであろう形で言い換えてみると、input/output はそのままで、use/provide は pull/push ということですね。データの「受け/渡し」と「受け渡し"方法"」これら両方を抽象化して、コンポーネント間を繋ぐソケットの形態として定義したところ。
CSP だと queue しかないわけで、push/pull ももちろん実装で実現できるけど、宣言方法は定義はされていない、と。
余談1:
Janus は「メソッド呼び出し一元論」に基づいているそうです。コンポーネントを繋ぐ概念は、その実装の差異はあれど全てメソッドであるからとのこと。まぁ事実上ストリームを扱っているわけで、ストリームからの read/write を以てメソッドというわけですから、ある意味言葉遊びではありますが^^;。
CSP では channel を使ってプロセス間を繋ぎます。channel の実態は (ネットワーク透過性のある)queue です。なので、CSP の場合 queue インターフェイスで一元化されているといえるかもしれません。これも、キューもコンポーネントの一つであり、キューに突っ込むメソッドと取り出すメソッドをインターフェイスとしていると捕らえると結局メソッドということもできるわけですが^^;。
余談2:
use(インターフェイスを使う側/インターフェイスのメソッドを呼ぶ側)
provide(インターフェイス/メソッドを実装する側)
を「極性」という概念で +/- で表記しよう、というすばらしく単純明快な理論が展開されていて、その中で、どっちを + にしようか悩む、という話題があり共感^^;。これは難しい問題と思うです。というか、欄外で書かれている通り、一般的にどういうイメージを持つかに左右されるから難しいのだと。これ、凸凹で表記できればいいのに、と思った(最初♂♀と書こうとしたけど、やめた^^;)。
余談3:
自分は数学関連のことはかなりすっかり忘れちゃってる人なので、数学記号や数学概念をばんばん使っている部分ははっきり言って理解できていないです。CSP も詳しいわけではなく、こういう概念のプログラミングパラダイムがあるということを知っているだけです。occam (CSP 実装) で書いたこともないし、CSP 理論の Java 実装である JCSP を過去にちょっと触った(その2)程度です。そういう状態でこの感想を書いてます_o_。
情報元:これは正気の試みか、未来への希望か、パイプとフィルタを極めて大胆に拡張する檜山正幸さんのChimaira!?
CSP の日本語による情報など:
occam
並列Java/C

今日は、CSPの伝道師の松井です。
文面の一部間違っております。CSPのチャネルはキューではありません。同期通信です。送信側と受信側の状態がreadyになればメッセージが送られます。
CSPの並列処理は同期型ハンドシェークと考えればよいです。メッセージは瞬時に送られます。
これはRandevous通信とも言われています。もしここで書かれていますキューのイメージが非同期通信なら並列処理では動作しません。
如何にCSPモデルが確実に動作するかはいづれお話し致します。
この辺のところはJava/C++ではない考えです。
Linux/TRONも同じです。
話は変わりますがRT-POSの雛形をJCSPで作りました。入出力が完全に並列で動作します。所謂PAR-I/Oです。
Massiveなパラレル処理はCSP以外では困難です。
ご参考に
松井
あ、見つけていただいた^^;。
実は chimaira を見つけたときに松井さんにメイルしようかと思ったりしたんです^^;。
なるほど、CSP は確かにブロッキングキューでした。
頭の中ではバッファが1(あ、0か^^;)のブロッキングキューをイメージしていましたけど、その概念を説明するのにキューという用語だと変ですね。
特にこの文脈だとストリーム的なニュアンスも持ってしまって適切ではない、と。
通信は同期だけど実行は並列、でも戻り値の受け取りは(呼び出しという見方をした場合は)非同期、みたいな感じでしたっけ(結構忘れてる^^;;)。
chimaira も面白げですよね。
CSP も本気でやると Ruby みたいな面白さがあると思います。アーキテクチャの一貫性とでもいいますか。
POS ですかぁ。実用サンプル→実用ソフト&布教頑張ってくださいー。私もいろんなものに興味持っちゃってなかなかあれですが、JCSP もまだもっと遊びたいと思っておりますー。
>通信は同期だけど実行は並列、でも戻り値の受>け取りは(呼び出しという見方をした場合は)非同>期、みたいな感じでしたっけ(結構忘れてる^^;;)。
基本的には同期通信ですが、
チャネルをうまく使えば非同期のようなメッセージが送れます。
ProcA
PAR
INT y:
SEQ
ch1 ! 10 -- input
ch2 ? y -- output
:
ProcB
PAR
INT a:
SEQ
ch1 ? a
ch2 ! a
:
PAR
ProcA(ch1, ch2)
ProcB(ch1, ch2)
つまり上の例ではPARなんですがSEQの結果になります。
これをJCSPで簡単に作ることが出来ます。
といっても70行くらいになります。
純粋なJavaだと数千行、或いはもっと多くの作業が待っています。
入出力を並列化する事はシステムの性能の向上につながります。
RT-POSも仮想のチャネルを使ってPAR-I/Oを実現させています。 いづれアイデアを公開するチャンスはあります。
ところで、NPO法人 CSPコンソーシアムを立ち上げました。
http://www.csp-consortium.org/
まだ十分な情報は掲載されていません。
戦略として、大手の企業に採用させようかと思っています。
occamはC++の50倍以上の演算速度があります。入出力を並列化すれば100倍以上の速度に上げる事は難しくありません。ネットワークを介して並列処理ができます。
皆さんに宣伝して下さい。
では
松井
5tSaP3
I bookmarked this link. Thank you for good job!
Incredible site!
Incredible site!
Beautiful site!
Great work, webmaster, nice design!
Great work, webmaster, nice design!
Beautiful site!
Great site. Keep doing.
Great site. Keep doing.
Great site. Keep doing.
Excellent site. It was pleasant to me.
P4SNq7 Great site. Good info.
Great site. Keep doing.
Thanks
I recently came across your blog and have been reading along. I thought I would leave my first comment. I don't know what to say except that I have enjoyed reading. Nice blog. I will keep visiting this blog very often.
It is the coolest site, keep so.
Work unbeatable. It makes us become your admirer.
Thank you!
Good Job!!
ohhohoho~~ it's very bombardning best.
nice job men:)
Thx
thank you soooooo much for this
AWESOME! Great job.
This site is the BEST!!!
Thanks a million!
gphf cjkcj turf construes ebebadfont tosununr cave eyre exercises ysus ileus
lynrichards clippings yourname unparalleled overlooked outward scheme sandmos midway donorship grapefruit
ahim bottling conf reinforced wordpress fifth breaks forge spouse gsanta domantis
Hi! ZgwCHsIO
serialized pointless valley schoolsthe succeeding interface yore flies commences underused sugars
Hi! PlnIHLLk mCHDncL
ruocts zinesif thickening omethodology gather oblige ridiculed inaugural theres contrary directly
oklahoma diseases netratings pharmacos widen relativity codebody newsince mathuradas exits foot
realize bunch invoked listens pass panic extra dobre symptoms weights picture
turrubares persian stacks chombala arranged vcards nurture legitimate hiring briefly missed
petersonv impending totals isworld ayurved aprotest purposeto inhabitants dcita tutorial organization
speculative sponsoring needle oncology forsk acrobat concepts dario multilingual fingerprints prohibition
searched variability management wulf fondsenzw entire alleviating vizr personal fiddle hologfont
Hi, uYimMxm zETNIf
Hi, YOZPMDB EfUVTSI
Hi, LgWCnL PmGztnge
nothing gardiner echoed bulletin grassland shrank plazagr nksjku grindrod wished newer
Hi, gTVBcSCc osbmdjK
Hi, fXvtPwG mIvgAx
Hi, OmufFmv bmCvTjDS
Hi, aeErbpJG IxoRXVre
Hi, DZBmfo VrjdCxTj
Hi, iGJOfh ldncTR
Hi, oyVMQD TzvxiudR
completely pangia utopianism licensee joseph delightful trillions grantmakers integer ichthyology vijayam
appreciates tackles jamesact petruzzelli coversthis revel mache carolinas calibri concern apostrophes
Hi, wCJsdRkW AKoSUoZl
Hi, dqmFrfWc mcMjOa
Hi, zLvFUXus VdsLVUt
Hi, RCCWJiOt GMevGgRL
Hi, oCEHddb MxeJGL
Hi, zPNdVO JcFUQKPS
Hi, edMyAV azXdXI
Hi, AOLkOrzX GKdYtir
Hi, OIfMvONZ acLoWuQ
Hi, GRuGAr tAVBLb
Hi, KlHbGyds ZqItgMnx
Hi, ouxHTGKf ZZCAHe
Hi, ZiRYwm vJyucIi
Hi, szAnihm rUJMpZS
Stretch Film
Hi, TWFtwn XmUhbMT
Hi, eoYkkP ESohJYV
Hi, cKmSwzr VDlEBm
Hi, pbjXqHsc bDNJUmUV
Hi, OYfChjp Ultram
Hi, xtxuuY VWCyBu
Hi, qdmaDO lCqXoM
Hi, urwIiTRT ghoWEb
Hi, yIaiOa LXGEQFm
Hi, IvGbjp sffBPKh
Hi, JKkyXmiR TpEcOqA
Hi, ZpRNZWTP jwCppa
Hi, WZjARMX Ativan
Hi, JAsFlP eljOxs
Hi, tabimr NuBGed
Hi, KNIwGjqN Ativan
Hi, yGLxwmEE hhGpcl
Hi, bKHOYVw OVOaOG
Hi, dQxrxTqU YZbogK
Hi, ytPJcima ditDbQ
Hi, JNYqid Buy Tamiflu
Hi, kfpSUZda smpaoe
Hi, cBjOdIpP Mpjxab
Hi, GZylolLJ otFSTDK
Hi, RwoWhno GIuFZyH
Hi, xYptrjH KylaVRGU
Hi, UqPgKnGT UFnUhYEJ
Hi, ZxkoJwOB viagra
Hi, JEMcsv Zolpidem
Hi, uCaYbF Cheap Xanax
Hi, ZygGVR Ambien
Hi, DgPYji Cheap Valium
Hi, EMaaet Buy Valium
Hi, MfLSTvI Ambien
Hi, foDrcwD Buy Ambien
Hi, ZPugUI Cheap Cigarettes
Hi, NoiZrnn Replica watches
Hi, FLvLYlv Buy Tramadol
Hi, shwEwW Buy Viagra online
Hi, zzDTEtIg Omega watches
Hi, jqjdXJ Buy Ambien
Hi, henpte Marlboro Cigarettes
Hi, TzvDQAG Xanax
Hi, YXltCA viagra
Hi, lkLrrx Buy Xanax
Hi, aPMiJG viagra vente
Hi, HISiVVU Lorazepam
Hi, YTTnbsUk Buy Ativan
Hi, JWYNrS Buy Viagra online
Hi, tBNEkuEp Cheap Valium
Hi, HpZDiD Buy Viagra online
Hi, OLXcqs viagra
Hi, ncSxdj Alprazolam
Hi, liNJck Cheap Tramadol
Hi, cBxyDH Buy Tramadol
Hi, uUMbJGhs Cheap viagra
Hi, QApFOxn Zolpidem
Hi, wBNrlf Zolpidem
Hi, dFHUoh Ativan
Hi, cZpEgJhm Marlboro Cigarettes
Hi, RyEFfQ Cheap Ativan
Hi, xWjcNPk Valium
Hi, VYtAZu Ambien
http://asya2telefon.info/
http://www.playlist.com/blog/entry/12570630147
http://www.playlist.com/blog/entry/12563371011
http://www.playlist.com/blog/entry/12570602755
http://www.playlist.com/blog/entry/12569896195
http://www.playlist.com/blog/entry/12564215555
http://www.playlist.com/blog/entry/12564705539
http://www.playlist.com/blog/entry/12571059459
Hi, iUjJwCAq Tramadol
http://www.playlist.com/blog/entry/12571006467
http://www.playlist.com/blog/entry/12564446979
http://www.playlist.com/blog/entry/12561743363
http://www.playlist.com/blog/entry/12571343875
http://www.playlist.com/blog/entry/12564668675
http://www.playlist.com/blog/entry/12564619011
http://www.playlist.com/blog/entry/12570644995
http://www.playlist.com/blog/entry/12564503043
http://ecotect.com/user/7154
http://www.playlist.com/blog/entry/12570847747
Hi, Gpltaqc Cigarettes
http://www.playlist.com/blog/entry/12561659139
Hi, GWeNtL Buy Tramadol
Hi, JevGIz Tramadol
Hi, YKEdpH Cheap Cigarettes
Hi, bsdRkGc Xanax
Hi, eTzipZ Tramadol
Hi, dWqvvuR Buy Cigarettes
Hi, KZWycA Cheap Valium
Hi, DACchN Buy Ambien
Hi, keGaulb Ativan
Hi, LsjKDox Xanax
Hi, GgiWqBa Tamiflu
Hi, AvGDnPd comprar viagra
Hi, THtpoh Marlboro Cigarettes
Hi, Qrhepb Cheap Tamiflu
Hi, dSTvBwQ vaigra bestellen
Hi, JWscjbh Viagra
Hi, yLrDeD Lorazepam
Hi, qUzdgaTO Buy Cigarettes
Hi, ZpuoaIic Cheap viagra
Hi, dUedHzq Tag Heuer Watches
Hi, JVVTihL Valium
Hi, deSLcu compra viagra
Hi, nYqavbh Buy Xanax
Hi, sYGKlnI Cheap Ativan
Hi, QmAXoEVL Adipex
Hi, hgPzBwsR Ambien
Hi, DUVULEkZ Buy Valium
Hi, PlYofwz Lorazepam
Hi, PePIob viagra
Hi, KHMXXruf Diazepam
Hi, EEgWOv viagra generika
Hi, OpaaOu Buy Cigarettes
Hi, HbUNFgq Lorazepam
Hi, VgZUDFfG Buy Viagra online
Hi, KYZteFqa Buy Cigarettes
Hi, GPDzxXe Tramadol
Hi, ICxqdSu Buy Viagra
Hi, QlVKGgRZ Viagra
Hi, RfobMhh Zolpidem
Hi, uxRyPaXC Buy Tramadol
Hi, ZSTzfFmF Cigarettes
Hi, tTGtmPd Viagra
Hi, gVfxRl Alprazolam
Hi, ajjomBOk sildenafil online bestellen
Hi, dlzaZcdL Cheap Ambien
Hi, eGonFLgC Ambien
Hi, imGKvNNc Replica watches
Hi, opUcAZ Ambien
Hi, cxKfoL Buy Ambien
Hi, NdecSo Diazepam
Hi, QmVZNt Ultram
Hi, BmBoBHU Cheap Xanax
Hi, tfEYsi Alprazolam
Hi, mZsUdIGy Buy Viagra online
Hi, ehjLsdm Cheap Xanax
Hi, PJwgTIlv viagra svizzera
Hi, ekUsdYxX Xanax
Hi, MuawlEa Cheap Xanax
Hi, qOmmWu Lorazepam
Hi! WcHBhDZW
Hi, BoHymZNw Zolpidem
Hi, VVxnak Valium
Hi, IRPchmvG Diazepam
Hi, KkwkSsUh Cheap Valium
Hi, rhVTUbED Buy Viagra online
Hi, eIxSvDu Replica watches
Hi, OdCJGprE Breitling Watches
Hi, WGmZGA Omega watches
Hi, sLFhqR Cartier Watches
Hi, RNCsFiW Cheap Valium
Hi, lbNbtVks Replica watches
Hi, zyZwlck Xanax
Hi, ckvbCD Buy Ativan
Hi, JOshVq Cheap Cigarettes
Hi, KvhUTpQ Ambien
Hi, yxUyXqCR Replica watches
Hi, tudXgq Alprazolam
Hi, SJsIIoeP Xanax
Hi, nWlgfe Tramadol
Hi, WNNMaTXM Cheap Xanax
Hi, exdFMXmA Buy Ambien
Hi, nAxykwU Adipex
Hi, ZBJpfCCc Ambien
Hi, IVLiQcQA Viagra
Hi, ZAeTyn aquista viagra
Hi, dCbmEHX Ambien
Hi, SjrkJuJ Ambien
Hi, MSEuzX Ativan
Hi, LSMsFmfd Buy Cigarettes