見出し画像

「モデルと表現」を読んで

この本は読んだことがなかったのですが、インターネッツから流れてきたので買ってみました。

こちらのサイト

「岩波講座ソフトウェア科学17 モデルと表現、米澤明憲・柴山悦哉、岩波書店、1992」ですが、入門書の域を超えているのでここでは紹介しません。

という説明がなされていますが、その前提で(笑)

ソフトウェア科学は全17巻。モデルと表現は最終巻です。道のりが長いが、何かしらのオブジェクト指向言語の経験があるならば、この書籍だけを読んでみてもよいと思う。

対象世界の何らかの方式でモデル化し,そのモデルをソフトウェアとして表現記述し,そのソフトウェアを実行することによって,対象世界を「シミュレート」することにある

モデル化とオブジェクト指向

すごく簡潔にモデル化とオブジェクトの関係性がまとめられていました。

2.3 オブジェクト指向は,問題領域に登場する実体と実体間の相互作用を,できるだけ1:1に近い形でモデル化・表現しようとする努力の所産である。
2.4 オブジェクト指向の本質は,その強力なモデル化能力と,ソフトウェア構築のためのモジュール結合方式にある。
2.5 オブジェクトは,実体の持つ状態と機能を,固有のデータ群と関数・手続き群とをひとまとまりの合併体としてモデル化・表現する。
2.7 実体間の相互作用は,対応するオブジェクト間のメッセージのやりとりとしてモデル化・表現される。
2.9 オブジェクトを定義するには,それが持つデータ群の表現と,受理するメッセージの形とメッセージによって起動される手続きや関数の表現を指定する。

Evansも、設計がドメインモデルに紐付いていないならば、そのモデルにほとんど価値がない、ソフトウェアが正確であるかどうかも疑わしい。また、この紐付けが複雑だとソフトウェアを理解することが難しく、設計が変更されたときに紐付けを維持できなくなる、と言及しています。
他の説明も、簡潔ですが的を得た説明だと思います。

型とオブジェクト

型の説明も非常にわかりやすい。しっくりきました。

一般に「型」とは,値の集合のことであるが,この型に対して2つの観点がある。1つは,プログラムによる操作・演算の対象となるデータが,そのプログラムの問題領域に登場する概念的あるいは物理的実体をどのように分類し,モデル化・表現したものであるかを明示的に表すために型が導入されるという見方である。もう1つは,プログラミング言語による表現・記述という立場から,プログラム中に出現する特定の式(expression)が取り得る値に関する制約として型が導入されるという見方である。

型の有用性についての説明。補足説明いらないですね、これ。これを読んだら型なしは辛いなと再確認…。

プログラミング語に型概念を導入する利点はいくつかある。まず第1は,(i)プログラムの設計やコーデイングの際,プログラマに,どのような類型の,どのような制約を持つた対象を扱つているかを明確に意識させる助けとなる点である。これによって,プログラマがある型のデータに,その型にとって意味のない演算や操作を施したり,本来ある型のデータがくるべきところに異なる型のデータがくるように記述してしまうような誤りを少なくすることができる。さらに,このような誤りは,(ii)プログラムの中の各式がどのような型を持つかを与える厳密な規則を決め,その規則をプログラミング言語の意味論の一部と定めることにより,コンパイラに自動的に検出させることが可能になり,プログラムの誤りをさらに減少させることができる。また,(iii)手続きやデータ群などのモジュールが,どのような型を持つかという型情報は,そのモジュールを使うための“インタフェース"とそのモジュールの実際の実現(implementation)との分離の促進を可能にする。...。...
その他に,(v)言語に型を明示的に指定する構文機構がある場合,プログラムの可読性を高める場合が多い

この本は良書でした。おすすめです。

この記事が気に入ったらサポートをしてみませんか?