あらゆる物事について,自分がよく出会う入門者には2つのタイプがいる.
- 使えたらそれでいい人
- 必要ないけど興味を持った人
「使えたらそれでいい人」は,もし,ある入門書を読んでその意義がわからなくても,彼ら自身が期待する結果を得られればそれで満足する.だけど,「必要ないけど興味を持った人」は,もし,ある入門書を読んでその意義がわからなければ,その先を調べるのをやめてしまうだろう.彼らは結果を求めてはいないのだから.
ある種の入門書は,その世界に少しでも興味を持ってくれた彼らをその世界の内側へと導く役割を担う.そんな入門書にとって最も大事なことは,一通りの説明を聞いた後に彼らから発せられる「それがどうしたの」という質問に対して,解答を用意しておくことだと思う.
入門者に何かを説明するときは,必ず「それを使ってどんな面倒がどのように解消されるのか」を例示しなければならない.
プログラミング言語の学習を例にとって考えてみよう.
計算結果を格納する場所として,変数の存在意義は誰にでもすぐにわかるようだ.ところが,配列変数の存在意義となるとわからない人が出てくる.実際に配列変数を使ったコードを書かせてみると,添え字に定数しか使っていない.
int a[10]; a[0] = 0; a[1] = 0; //... a[9] = 0;
配列変数というものがあることを知ったばかりの人は,配列の添え字として変数の値を使えることに気が付かないのだ.だから,配列変数という概念を教える時には,次のようなコードを示すべきだ.
int a[10]; for(int i=0; i<10; i++) { a[i] = 0; }
同じようなことは,学習が進む中で何度も起こる.何とかポインタの存在意義がわかった人でも,関数ポインタの存在意義となるとわからないことが多い.
重ねて言うが,入門者に何かを説明するときは必ず「それを使ってどんな面倒がどのように解消されるのか」を例示しなければならない.
というわけなので,圏論の何が嬉しいのかをどなたかどこかで説明してください(ぇ
モナドって何?
それつおい?(ネタが古い)