読者です 読者をやめる 読者になる 読者になる

プログラミング C# - 翔ソフトウェア (Sho's)

C#/.NET/ソフトウェア開発など

「抽象的な問題を具体化して解く」ということ

ドキュメント

The Solution for 'Wason's Four-card Task' (「ウェイソンの四枚カード問題」解答編)』の更に続きです。

ちょっと考察してみました。

プログラマーの場合は、「論理をコンテキストから切り離して、抽象的なロジックを抽象的なまま記述する」、なんて日常的に仕事でやってることだから、具体例がなくても抽象的な話のままで結構理解できるのかも知れません。

でも逆に、プログラマーは、「問題を分析し、関心事ごとに切り分けてから、解く」というのに慣れ過ぎていて、具体的な問題を具体的なまま理解する、というのが、苦手になっていたりするのかも知れません。

# 私がよくやってしまいます。例えば、妻と会話をしていて、「えっと、つまりそれってこういうことだよね」とか「結局どの部分が問題なの?」とか。妻は、私の「直ぐ分析しようとする癖」が好みではないらしく、これは、夫婦喧嘩のもとです。

で、「問題を分析して抽象化して解かせようとする」というアプローチばかりをとってしまったりします。しかし、抽象的な問題を具体化した方がずっと理解しやすい場合がある、という実は当たり前なことを見逃したりしがちな気もしています。

私は、「複雑な問題はシンプルにしてから解こう」というアイディアは、それ自体がとてもシンプルで良いものだと思います。そして、分解したり、抽象化したり、というのは、シンプルにするのに、とても効果的な方法だと思います。

しかし、分解したり、抽象化したりすることが、いつも最もシンプルな解法だとは限らないのでしょう。逆にそうすることで、見えなくなってしまうものもあるのだと思います。

『一枚の葉にとらわれては木は見えん。一本の木にとらわれては森は見えん。どこにも心を留めず、見るともなく全体を見る。それがどうやら…「見る」ということだ』(沢庵和尚『バガボンド 4』講談社 井上 雄彦著)