><https://twitter.com/orange_in_spacehttps://pawoo.net/@orange_in_space
オレンジは、その土台の形はどう教えるの?><; って・・・><
その土台の形が最初に提示される必要があるのではという話をしていたのですが……
x再起に o先にx再起に教えられてる人がx教えられてる人が先に
これべつに、土台に付く部分を邪魔するって話じゃなく、再起に教えられてる人が途中で気づける(=自分でたどり着ける=設計できる)のであれば、「という事はあれを使えば!!!」「その通り!><」で済むよもちろん><そうじゃなく通過しそうになっちゃった時に「それは実は既にあるんです!><」って教えてあげると、「そんな便利なものが!」ってなるみたいな感じ><
「自分で気付く余地がある」というのは大事だと思っていて、それがないと「自分で気付けたかもしれないことも、インストラクターから全て指摘されるまで確定できない」という他人に制御されている感が強烈になる
自分で考えるクセがつけられないのであれば、どうしてそうするのか?を実体験として学べなくて、ソースコードコピペしてるのとあんまり変わらないよって言いたい・・・><
どこまで掘り下げるのか?の問題はあるけど、知識のを知識としてのみしか教えないのであれば自分で考える方法は学べないし、ソートを教えられる時に「どうしてそうする出来るのか?」まで自分で考えるように教えないのであれば、それはソースコードコピペして済ますのと大差ないかも><
それは提示されることと活用することを同一視しているから発生する懸念であって、たとえば数学書で定義を覚えていなければ後から戻ってもう一度閲覧できるのと同じように、提示された条件も指摘された後で戻って確認することもできるわけです
もっと小さな問題で考えるなら、「加算できる機械があります」という前提条件と「こうすると加算ができます」という知識はそのまま交換可能ではないわけで、設計を試してもらううえで、後者を考え出す必要がないのであれば、前者の条件を事前に与えるべきなのでは、ということです
「ソートは与えられているので今回その中身を考える必要はありません」という条件と、「こうするとソートができます」という知識は全く別の話で、たとえば後者を知っていたからとして今回の設計でそれを使うとは限らない(それを掘り下げるべきではないかもしれない)
この土台とくっつく瞬間に「なるほど!!!!><」ってなるし、教えてる側の時だとその瞬間まで「(うっせーな・・・)」みたいな反応だったのが「そういうことか!!! なるほど!!」みたいな反応になって質問してきたりするし、なんというか・・・><
それはそうだと思うけど>< でも、うまく説明できないけど用意した土台にくっつく瞬間の部分?><みたいなのは、初心者だからこそ提示してても気づけない可能性が高いし、さっきの「加算命令というものが!><」みたいな風に教えてあげないと、通過(?)しちゃうかも><
無論、現実に高度な問題を考えるうえでその壁というか限度が見えないということもままあるでしょうけど、それは初心者に教える例として使える難易度の問題ではないというだけで、選択のミスではと
そういう、「これ以上掘り下げる必要はありません」という壁のようなものは、設計そのもの(いわゆる「答え」)を直接には記述しないわけで、これが事前に提示される必要があるのではと考えます
条件が足りないと「足し算をする必要があります→まず AND と XOR を作ります」みたいな分割までやらないといけない(それをやる直前まで「ここで終わり」と気付けない)かもしれないわけで、「ここまでいけば十分であろう」というのを設計者自身に自覚してもらう/見通してもらうためには「足し算できる機械が最初から用意してあります」という前提条件が必須だと思うわけです
ていうかプログラミングって設計だよね!>< 設計できないとオリジナルのコードは全く書けなくて当然だよね!><って話に、個別のアルゴリズムを予め教えてっても、アルゴリズム自体を「自分で考えながら学ぶ」んじゃなく、答えを教えられておぼえるみたいになっちゃうよね?><なぜならば、プログラミングに於いての「自分で考える方法(=設計の考え方)」を学んでないんだから?><
難しい><;
既成の部分が使えるかを知るためには「これはこう使える」みたいな用法まで含めた部分がわかっていないといけないわけで、それって最初に教えるべき部分ではなくて、「問題を(設定された粒度まで)分解できる人が、部分的に未分割な問題とうまく付き合う方法」という、言ってみればステップアップ後の段階なのではと思いました
ていうかそんな事言ったら何らかの課題で教える時に正解を丸ごと教えないとケチみたいな話になっちゃう>< それじゃ何も設計は出来ない><
試行錯誤するにしても、「整数に分解します」の部分は絶対に最初に提示するべきだと思うんですよね
思考の /dev/null