Clean Architecture より、3つのプログラミングパラダイムの本質

読んでいます。

Clean Architecture 達人に学ぶソフトウェアの構造と設計

Clean Architecture 達人に学ぶソフトウェアの構造と設計

第3章~第6章で、3つのプログラミングパラダイムについて語られています。

Uncle Bob (著者の愛称) いわく、これらそれぞれはプログラマーに何か能力を与えるのではなく、プログラマーの能力を制限している。すなわち「何をすべきではないか」を規定しているのだ。構造化プログラミングは直接的な制御の移行 (goto) を封じ、それてによってプログラムの反証可能性を確実なものにする。オブジェクト指向プログラミングはポリモーフィズムによる依存関係逆転によって、制御の移行の方向を制限する。関数型プログラミングは、変数を固定にし、代入を制限する。これらによって、コードベースに秩序がもたらされる。

これは味わい深い話だ。コードベースでは数十年にわたってこうした「何をすべきではないか」を学んできた。アーキテクチャレベルではどうだろうか?恐らく「どんな実装をすべきでないか」を完全に制御できるようなアーキテクチャは現実的ではない(実装者に依存する)だろう。これをどうやって規定し担保していくか、がソフトウェアアーキテクチャの難しさだろう。たとえば Microservices Architecture は最近、山のように「すべきではない実装」が書籍だったりブログだったりで報告されているが、それらを厳密に体系立てられたパターンとして制限できるような仕組みが生み出されるには至っていない。ソフトウェアアーキテクチャはまだまだ進化の途中だ。