オブジェクト指向の最大の特徴は、モジュールと型を一体に扱ったことです。
メイヤーの本では次のような「オブジェクト指向の基準」があげられています。
- クラスが唯一のモジュールでなければならない
- すべての型はクラスに基づいていなければならない
つまり、クラスはモジュールであり型であるということです。
ここで、モジュールにとって必要な、クラスで実現できる機能は、モジュール間で異なる部分だけをそのモジュールで実装するという差分プログラミングです。
型に求められるのは、データの分類です。
ということは、オブジェクト指向は差分プログラミングとデータの分類を同時に扱おうとしていたということになります。
けれども、データの分類と差分プログラミングを同時に行うのは大変です。
「できらぁ!データの分類と同時に差分プログラミングして、いいソフトウェアができるっていったんだよ!!」
というのがオブジェクト指向だったのですが、いざこうやって改めて「データの分類と同時に差分プログラミングを行ってうまいソフトウェアをつくってもらおう」って言われると
「え!!データ分類と同時に差分プログラミングを!?」
ってなるわけです。
現在のプログラミング言語の型は、オブジェクト指向が流行った時代よりもかなり発展しています。型によるデータの分類は、オブジェクト指向を離れて発展した型理論をもとに考えるほうが、整理され新しい考え方にもついていきやすいです。
差分プログラミングは、クラスと継承をもとに考えてもコーディング作業として煩雑で、またムダな制約も持ち込んでしまいます。 いまや差分プログラミングはラムダ式など関数ベースで行うほうが主流でしょう。
ということで「継承を使って差分プログラミングをすると便利だよー、でもあれれ~ラムダ式でもっと簡単にできちゃったね」という説明したり継承による型の分類を紹介したりする本が3/19に出ますね。
FAQ
Q 電子版はでますか?
A 紙版のあとに出る予定
Q 目次等は?
A もうしばらくお待ちを
あと、メイヤーの本はこちら。