嫌われプログラミングの代弁者

「何で頭ごなしに嫌う人間が居るのか」を色々考える

社会実装を伴う、数学的抽象化の禁忌 4

それっこその、「反転」

「社会実装を伴う、数学的抽象化の禁忌 3」で、何の説明も無しに、

  • 型の事を、「便利なはずの継承が、社会実装を伴うと、禁忌に触れてしまう」のと同じに見える

と書きましたが、

継承が悪い理由は、

  • 制御の反転(Wikipedia 日本語版)の、
  • 上位モジュールはただ「抽象(インターフェース)」に依存する
  • は、
  • 「社会実装を伴う、数学的抽象化の禁忌」すなわち、
  • 抽象(インターフェース)以外の「データの作りの制約」などについて、消えたのでは無く、隠しただけとし、
  • 抽象化して、何かを隠す(「本質的でない細部を削ぎ落す」)場合、
  • ダメな、出来ない事隠すのは禁忌
  • なのは確かだが、
  • 継承は、(禁忌で有る)制御の反転を言語仕様として極端な形で強制するから、本当の禁忌となる。

と整理出来るのでは無いでしょうか?

制御の反転は禁忌に触れているが、それを徹底した継承はもっと強く禁忌に触れるのです。

これぞ、「発想の反転」に他なりません。

 

 

データの意味は”使う側の総意”で、それを隠すな

インターフェースに

  • 「良い名前を付け」、
  • それのみに依存する

というのは、

  • 継承の亜流で有り、
  • 継承の悪さを一部緩めただけで、
  • やはり悪い

という整理なら、一気通貫に話が通ると思います。

データの意味とは、

  • ドメインの知識にも通じ、
  • インターフェースでは、それらを代表しない
  • 型もダメで、
  • 実クラスからしか発しない

し、それゆえ、

  • 『上位モジュールはただ「抽象(インターフェース)」に依存する』

というのは、貴公、継承の尻尾に過ぎない、と断じられても、当然だと思います。

 

 

結論

これからも「社会実装を伴う、数学的抽象化の禁忌」でプログラミングが嫌いになる人は存在し続けることでしょう。