とあるQiitaの投稿を読んで目から鱗が落ちました。
「説明的な表現」はオブジェクトを回す回数が非常に多い場合や一個一個追うと頭で処理しきれない処理がある場合をスッキリさせます。
構文の形としては、数学の影響を受けています。実は数学においても同じように膨大な大きさの集合(無限個の要素を持つ集合など)を扱ったり、手でするには途方もない計算をする場合、そもそも計算方法を捉えられない場合があるからです。
「複雑で膨大な量の処理をする」というプログラミングにおける大きなテーマを、数学と結びつけていることになります。
これまでこういう考え方がちゃんと出来てませんでしたね。
実は内包表記は、数学における集合論の内包的表記の影響を受けています。
数学における集合は、さまざまな数学的対象を定義したり議論したりする際に言葉(言語)として用いられることがしばしばあります。内包的表記は、この記事の中心の話題であるリスト内包表記と同様に説明的に集合を捉えることができます。
そもそも「オブジェクト指向プログラミング」の概念自体、数学の影響を大幅に受けてたりしますね。
その中核をなすフレーム理論は人工知能由来ですが、大元はやはり数理的集合論由来だったりします。
気づいた方もいるかもしれませんが、数学において集合は実は数の集まりだけでなく一般的に"モノ"の集まりを扱うことができます。
よってシステム開発などで、あるデータの集まりの各データに対して一定の処理を施すような業務処理(バッチ処理)などは集合論的に考えることが可能です。
数学は頭ではイメージしきれない(イメージする必要がない)集合(無限集合など)をどうにか扱うため、対象の本質をおさえながら論理的に議論を進めることがあります。
そんな無限集合さえも扱ってしまう数学の圧倒的な道具をプログラミングにも活用することで、コードに処理の本質を表現しておくことができるのです。
今年はこの辺りの理解を深めたい…そんな感じで以下続報。