開放型プログラムと閉鎖型プログラム2006年09月11日 19時40分05秒

広い世の中の何箇所かで、開放型プログラムと閉鎖型プログラムについて議論 が上がっている。論点は幾つかある。

  1. 開放型の定義は?閉鎖型の定義は?
  2. 開放型の利点は?閉鎖型の利点は?
  3. 閉鎖型のほうが優れている。閉鎖型に変えるとかっこいい!
  4. そもそも、プログラムに開放型・閉鎖型の区別は無いから、そう呼ぶことは愚かだ

1.については、複雑怪奇な定義を考える人もいるが、私は単純に、

  • 開放型 … メインループがSTARTから開始する
  • 閉鎖型 … メインループにSTARTが含まれない

と理解している。CHシリーズのプログラムアーキテクチャの分類の一つとして、 とてもわかり易い。

では「メインループの定義は?」と聞く人もいるが、プログラムを組んだ本人 がメインループだと思えば、それがメインループだ。

ちなみに、メインループ以外は、局所ループとかローカルループとか呼んでい る。閉鎖型・開放型に関わらず、頻繁に使われるので特に言及することも無い。

2.については、前世紀にはSTARTに戻るペナルティが大きかった時代もあった ので閉鎖型のメリットは大きかったが、現在はほとんど無い。開放型では初期 化の場合分けなど、1~2個の判断チップが余計に入るかもしれないが、デメリッ トはそれぐらいである。メリットは、どこからでもメインループの開始に戻れ るということから、「作り易さ」であることは明らかだろう。

3.は、利点欠点が明らかになって、「数チップの処理時間」と「作り易さ」 というトレードオフの問題になったのだから、あとは製作者がどっちを重視す るかの問題だ。「数チップの処理時間」は機体の反応時間に直結するが、「作 り易さ」は改良し易さ、新機能の組み込み易さにつながるため、これは機体の 戦術的な強さに直結する。結局、どちらに優劣があるわけでもない。

「最初は開放型で作って、完成したら閉鎖型に作り直すのが最良だ」と言う意 見・・・ごもっとも。機体の反応速度と戦術的な強さは直交する概念だから、 両立は可能だ。変換はなかなか大変な作業だと思うが、頑張って欲しい。リリー ス直前にやると間違いなくバグを仕込むので要注意。

ちなみに、私は閉鎖型で作ることはほぼ無い。

4.については・・・「どうでもいいじゃん」と思う。なんで既に名前の定着 した事柄に拘る人がいるのか不明である。

余談だが、この閉鎖型の図はかっこいい。

コメント

_ BIP ― 2006年09月13日 00時45分40秒

ちわ。

閉鎖型:メインループにSTARTを含まない。

だと、私のソフトは閉鎖型です(笑)
閉鎖型になったり、開放型になったり、いったいなんなんだ(笑)

そもそもそういう議論は無駄ということなんでしょうけど。(^^;;

_ nas_B ― 2006年09月13日 00時54分55秒

一本公開して、どっちか投票してもらうとか。(笑

トラックバック