ここ数年のソフトウェア開発の大きな傾向として「イミュータブル(不変)」というキーワードがあると思う。
インフラはIaCが当たり前になった。IaCは、インフラのイミュータブル化。ChefやAnsibleが10年ぐらい前に出てきてIaCのムーブメントがあって、インフラはイミュータブルになった。作ったインフラを都度変更するのでなく、スクリプトを書いてリビルドすれば最新化されるので、不変という意味。フレッシュな環境が持ち運べるようになるなんて、ホンマに素晴らしい。
フロントエンドはReact/Vue/Flutterに代表される、const/finalな宣言的UI。特に関数が宣言的になる(関数型プログラミング)とフロントエンドは相性が良い。サーバーサイドもなるべくconst/finalが良いし、多分ほとんどの変数はfinalになるでしょう。イミュータブルでないコードを書くとLintにぶち殺すって言われる時代だし。
自分はPythonの書き味が好きだけど、結局人類には型が必要なんだよね。
イミュータブルなプログラミングをするためには、型で表現できないとなんにもならないので。コンパイラがチェックできないし。昨今流行している T3 Stackの肝は、データベース、サーバーサイド、フロントエンドでスキーマ(型)を共有できることだよね。そこに辿り着くためには Stackの言葉にあるように、色んなライブラリを積み上げる必要があるわけなんだけど。
オブジェクトという単位でプログラミングを行うことから大きなパラダイムシフトが起こるような気はしない。RDBに変わるデータ演算の仕組みが無いのと同じで、それより合理的な仕組みがなさそう。関数型プログラミングでもオブジェクトは必要だし。
プログラミングの表現としてはオブジェクトを宣言的に使う感じになっていって、webAssemblyの勃興によりブラウザがよりネイティブアプリに近づいてくのかな。