型無し君?
型は有用だと良く言われます。
全くその通りだと思います。
しかし、そんなに良いなら、
- 整数
- 実数
- 配列
- レコード型
を超える、汎用的な、全世界のみんなが、毎日使う様な型が有って当然だとは、思わないでしょうか?
しかし、十年一日、古の、さらに古のPascal言語で既にやっていた事以上の事が全く無いのはおかしいとは思わないでしょうか?
(以下、上4類型のみの型を、「古よりの型」と呼称します。)
そして、何で、そういう古よりの型を集約した型が
- 百人百様で、不偏不党を構成出来ず、
- 使い回しが出来ない
- 「便利なはずの継承が、社会実装を伴うと、禁忌に触れてしまう」のと同じに見える
のでしょうか?
データの意味
私は、データの意味は、
- データを使う側の総意
だと思っています。単に思っているだけで、根拠は有りませんが、そうでは無いと思った事が全く有りません。
なので、この文書では、そうだ、として話を進めます。
インターフェースの地位
インターフェースは、
- データを使う側では無く(仲介者に過ぎず)、
- データの意味に関与出来ません。
つまり、
- 抽象化して、何かを隠す(「本質的でない細部を削ぎ落す」)場合、
- ダメな、出来ない事を隠すのは禁忌
に抵触する、すなわち、
データの意味という、
- プログラムの変更を妨げ、
- 自動テストを不安定にする
に該当する、ダメな、出来ない事を(多分、数学的抽象化を企図して、)野放図に単に隠すだけである為、
その文脈にに置かれる型は、
- 古よりの型を超えた、社会実装に於いて、意味を加味した型
を(一切)見出せない、数学的抽象化の禁忌に、正しく相当してしまっている、
という状況なのだと思います。
なお、型と似ているクラスは、データを使う側に含まれるので、その禁忌を脱している可能性も有ります。
結論
これからも「社会実装を伴う、数学的抽象化の禁忌」でプログラミングが嫌いになる人は存在し続けることでしょう。