どの様な話?
1つの責務の処理が、
- {1 2 3 4 5}
と有り、3の前に、他からの値を待たないといけない場合、
- {1 2} と、{3 4 5}
に分ける方が、(赤関数を作るやり方などより)よっぽど自然だと思います。
さらに、
- { {1 2} {3 4 5} }
という書き方が有ったら、より良いと思います。
- {1 2} と、{3 4 5}
とは、
- 1つの責務が、複数のプログラムの部分から成っていて、
- 述語(詳細仕様)のレベルでインタラクティブ(リレーション)を成している
と読み解く事が出来ると思いますので、
こちらの方が本当の高階により近く、それをまとめる(多分)オブジェクトは、高階の表現を助ける言語要素だと思います。
オブジェクトなど不要な場合
先日、スマートHub(1G 8口、10G光 1口)を使い、メディアコンバータの真似事を実現しましたが、その際のスクリプトは、
- 各口にVLANのIDを設定するだけ
でした。これは関数型というより、宣言型だと思います。
ネットワーク機器等のルーティングでは、確かにオブジェクトは不要だと思います。
それは、
- 最終的な処理をせず、データの仲立ちのみを行い、
- 1つの責務の処理の途中で、他からの値を待つ必要が無い
からだと思います。
- 1つの責務を、複数のプログラムの部分で表現する必要が無い
場合には、オブジェクトが不要なのは、正当な話です。
結論
ある言語要素が必要不可欠な問題領域と、不要な問題領域が有ると思います。
これからも「本当の高階の貌」を見誤る風潮でプログラミングが嫌いになる人は存在し続けることでしょう。