« 実用性 | トップページ | トラックバック1251件 »

ネットワークの話

ネットワークと聞くとインターネットがどうだとかCGIがどうだとかWEB2.0がどうだとか,そういう清く明るい(?)話題がまっさきに思いつくものだけど,そんな健全な話題を僕がするかと思ったか!!残念だったな!!(僕の脳みそが)

というわけでOSI基本参照モデルがどうとかプロトコルがどうだとか言う,基本情報処理試験のテキストの中で出てきたら「ひまわりでゲームつくれるおれすげえ」系の若い学生さんにとりわけ毛嫌いされる部分について述べたいと思う.(いやひまわりは確かにすごいんだが)

なんでそんな話をするのかというと,仕事でネットワークに関連することをやることになっていろいろ調べてたらpreccsが未踏のプロジェクトだと知って,ちょっと興味が湧いたから紹介したくなったのである.(どうでもいいけど未踏のすごいプロジェクトって研究施設関連の人のばっかりで(技能屋としての)個人プログラマの影が薄くてちょっと悲しい)

preccsはプロトコルコンパイラである.
形式にそった言語で書かれたプロトコルの定義を食わせるとそのプロトコルを処理するC言語コードが出産されるというものらしい(じっさい使ったことはないんだけども).

さて,インターネットのプロトコルはTCP/IPなのだけど,TCP/IPはコンピュータtoコンピュータのデータ通信方式を定義しているに過ぎない.
指定したコンピュータ上のプロセスまでデータがきちんと到達するためにはプロセスtoプロセスの通信方式が定義されなければならないし(セッション層),さらにそのデータをどうアプリケーションが解釈するか(プレゼンテーション層)も定義されなければいけない.HTTPやFTPなんかのプロトコルはだいたいアプリケーション層からセッション層までが一緒くたになって定義されてるんだが,telnetなんかでヨソのサーバにアクセスするとアプリケーション層やプレゼンテーション層なんかをすっとばすことができるのは,OSがセッション層できちんとつないでくれるからである.
こんな風にネットワークは階層構造になっていてそれぞれの層をシステムのどの部分が受け持つかだいたい決まっているので,大抵の場合アプリケーションプログラムはネットワーク通信におけるアプリケーション層とプレゼンテーション層くらいしか気にする必要がない.便利なもんである.

で,preccsの話に戻ると,preccsのモデリング/マッピング方式は実用的にはデータリンク層からセッション層くらいまでをサポートするとされている.要するにアプリケーションプログラマにはほとんど縁のない部分である.
preccsのモデリングはプロセス代数に基づき,OSのようにプロセスの状態を遷移させながら同期的な通信を定義する.
preccsのサポートする層のプロトコル処理エンジンはアプリケーションプログラムからは見えなくても実は大抵の電子機器に実装される部分で,しかもこれがけっこう複雑なのである.だからこれを体系的に自動生成できればかなり設計効率は高くなるはずである.

このリンク先には最適化があれば...という話が出ているが(プロセス代数におけるモデリングでの最適化というのはやっぱり主としてステートマシンの最適化になるのだろうか),Cコードを生成するのでpreccs入力言語上でのマニュアル最適化とprecssコンパイル後のCコードマニュアル最適化で十分実用的になりそうな気もする(いやほんと使ったことないからわからんのだけど).

というわけで通信機器に興味があってpreccs使ったことのある人はぜひ感想を聞かせてほしい.

« 実用性 | トップページ | トラックバック1251件 »

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/163977/3990968

この記事へのトラックバック一覧です: ネットワークの話:

« 実用性 | トップページ | トラックバック1251件 »