[ 目次, 前節, 次節, 索引 ]

3  標準部品化力, オブジェクトおよび状態





(変化している時にも静止している.)

Heraclitus



Alphonse Karr

これまでの章ではプログラムを作る基本要素の話をした. 基本的手続きや基本的データが組み合され, 合成物の出来るのを見, 大きいシステムの複雑さに対処するわれわれを助けるには, 抽象が重要であることを学んだ. だがこれらの道具だけでは, プログラム設計に十分ではない. 効果的なプログラム合成には, プログラムの全体設計を系統立てるのに役立つ組織化の原理が必要である. 特に大きなシステムをそれが標準部品になる(modular)よう, つまり分割して開発, 保守が可能な整然とした部品に「自然に」分割出来るよう構造化するのに役立つ戦略が必要である.

   物理システムをモデル化するプログラムの構成に特に適した一つの強力な設計戦略は, プログラムの構造をモデル化しようとするシステムの構造に基づかせることである. システムの各オブジェクトに対し, それに対応する計算オブジェクトを構成する. システムのそれぞれの働きに対し, 計算モデルでの記号演算を定義する. この戦略を使っての希望は, 新しいオブジェクトや新しい働きを取り込むためのモデルの拡張が, プログラムへの戦略的変化を必要とさせないこと, 単にオブジェクトや働きの記号的対応の追加だけを必要とすることである. システムの組織化に成功すれば, 新しい機能の追加や古い機能の虫とりに, われわれはシステムの局所的な部分で作業すればよいことになるであろう.

   大きいプログラムを組織化する方法は, われわれがモデル化するシステムをどう認識するかにかなりなところまで左右される. 本章では, いくらか異ったシステム構造の二つの「世界観」から生じる顕著な組織化戦略を研究する. 第一の組織化戦略は オブジェクト(objects)に注目するもので, 巨大システムを, 時間とともに変化するいろいろなオブジェクトの集りと見るものである. もう一つの組織化戦略は,電気技術者が信号処理システムを見るように, システム内を流れる情報の ストリーム(streams)に注目するものである.

   オブジェクト準拠の解決法とストリーム処理の解決法は, どちらもプログラミングの重要な言語学的論点を持ち込む. オブジェクト間には, 計算オブジェクトが, どう変化出来, しかも同一性を保持出来るかという点に注意しなければならない. そのため, より機械的だが理論的には制御し難い, 計算の 環境モデル(environment model)の方がよく, 古い置換えモデル(1.1.5 節)を捨てることになる. オブジェクト, 変化, 同一性を扱うことの難しさは, 計算モデルに時を取り込む必要性の根本的な結果である. これらの難しさは, プログラムの並列実行の可能性を許すと大幅に増大する. ストリームの解決法は, 評価中に計算機の中で発生する事象の順序から, モデルでのシミュレートされた時を分離すると, 十分な利用が可能になる. われわれはこれを 遅延評価(delayed evaluation)という技法を使って達成しよう.


[ 目次, 前節, 次節, 索引 ]