「ソレは何か?」
という問いに対して応えるために必要な作業は、
客観的に知覚できる限りの差異で
「ソレ」を「ソレ以外」から区別する作業ではなく、
問者の主観的なシナリオの中に抽象化された
「ソレ」と「ソレ以外」との関係性を描く作業である。
そのためには、
その関係性を描くシナリオに、
問者のシっている「ソレ以外」を登場させ、それを足場にするか、
あるいは、
そのシナリオ自体と、
問者のシっている別のシナリオとの類似性を頼りにするか、
いずれにせよ、
問者のシっている物事から「ソレ」へと、想像を及ばせる事になるだろう。
こういう作業のツールとしては、モデルが有効だ。
モデルを表現するのに最適なのは視覚化であり、
その中でもよく使われるのは模式図(2次元的な視覚化)である。
特定の状況を表す模式図においては、
その状況に登場する要素は
「名前」、「アイコン」、「変数」などの抽象化された記号で表され、
各要素間の関係性だけが視覚化される。
各要素の内部構造は--- その要素自体の性質の由来であるが ---、
また別の模式図で表されるべきものである。
物事の「記録/再生」は、あるいは「理解/説明」は、
いずれこのような作業だと思う。
そして、これこそプログラミングの本質ではないだろうか?
抽象化に関する、能力と、センスと、情熱には、個人差があり、
手法、ツールがそれを反映しているのだろうと思う。
抽象化/記号の発明は偉大だ。
理解/説明
[ このエントリへはツッコミ出来ません ]