(変化している時にも静止している.)
Heraclitus
Alphonse Karr
物理システムをモデル化するプログラムの構成に特に適した一つの強力な設計戦略は, プログラムの構造をモデル化しようとするシステムの構造に基づかせることである. システムの各オブジェクトに対し, それに対応する計算オブジェクトを構成する. システムのそれぞれの働きに対し, 計算モデルでの記号演算を定義する. この戦略を使っての希望は, 新しいオブジェクトや新しい働きを取り込むためのモデルの拡張が, プログラムへの戦略的変化を必要とさせないこと, 単にオブジェクトや働きの記号的対応の追加だけを必要とすることである. システムの組織化に成功すれば, 新しい機能の追加や古い機能の虫とりに, われわれはシステムの局所的な部分で作業すればよいことになるであろう.
大きいプログラムを組織化する方法は, われわれがモデル化するシステムをどう認識するかにかなりなところまで左右される. 本章では, いくらか異ったシステム構造の二つの「世界観」から生じる顕著な組織化戦略を研究する. 第一の組織化戦略は オブジェクト(objects)に注目するもので, 巨大システムを, 時間とともに変化するいろいろなオブジェクトの集りと見るものである. もう一つの組織化戦略は,電気技術者が信号処理システムを見るように, システム内を流れる情報の ストリーム(streams)に注目するものである.
オブジェクト準拠の解決法とストリーム処理の解決法は, どちらもプログラミングの重要な言語学的論点を持ち込む. オブジェクト間には, 計算オブジェクトが, どう変化出来, しかも同一性を保持出来るかという点に注意しなければならない. そのため, より機械的だが理論的には制御し難い, 計算の
環境モデル(environment model)の方がよく, 古い置換えモデル(1.1.5
節)を捨てることになる. オブジェクト, 変化, 同一性を扱うことの難しさは,
計算モデルに時を取り込む必要性の根本的な結果である. これらの難しさは,
プログラムの並列実行の可能性を許すと大幅に増大する. ストリームの解決法は, 評価中に計算機の中で発生する事象の順序から, モデルでのシミュレートされた時を分離すると, 十分な利用が可能になる. われわれはこれを
遅延評価(delayed evaluation)という技法を使って達成しよう.