><https://twitter.com/orange_in_spacehttps://pawoo.net/@orange_in_space
「前提条件を後出し」じゃなく、必要な前提条件を見つけ出す作業こそが設計なんだよ><って言いたいしそれを教える感じかも><
「前提条件を後出ししてくるの反則やろ……」みたいな気持ちになる
オレンジがしそういう方法で色々教えた時の感覚では、ほぼ全ての人がそういうの苦手っぽいかも><; なんかものすごく「(あん? うっせーな・・・)」を感じる><;
私が割と自己完結的に考えがちなのでそういうインタラクティブな思索が苦手だというだけの話だったかもしれない
1対1で具体的に何かを教えてあげる時であれば、どこまで分解するかとかも「という事はそれをするにはどうすればいい?><」みたいに聞いてあげる事で、ちょうど必要な部分まで掘り下げるお手伝いが出来るかも><
これ、ちょっと考えてみたけど、最少単位が一通りわかってないと「どこまで分解するか」とか「何へと分解するか」みたいなのがわかってないとどうすればいいんだ……みたいな感じになるので、やはりメンタルモデルかなぁという気持ちになった(個人の感想)
この話を続けると「だからこそエアバスの思想の方が正しい!!!><」にも繋がるすごく汎用的な話かも><
目の前でやらせてみて一挙手一投足に「なんで今そうしたの?><」って問い詰められていけば、嫌でも自分が具体的に同士てるのかに気づけるかも>< ものすごくものすごく嫌がられるけど><;
で、一対一で教える場合であれば、「小さい順に並び替えるにはどうしたらいい?>< 普段どうやって並べ替えてるの?><」って細かく問い詰めていく感じにオレンジは何らかの説明する時はしてるかも><
たぶん学生にそれをさせると「小さい順に並び替える」と一行書いてオシマイになる.むしろそれが普通の感覚で,「小さい順に並び替える」を具体的に詳細に日本語表現しろ,となるとプログラミングに匹敵する難しさがあるように思う(まぁ,その究極的な表現方法がプログラミング言語であるとも言えるんだけど).
例えばソートでも、「プログラムとして書けなくてもあなたは数字を並べ替える事が出来るんでしょ?>< 普段どうやってるのかそのまま説明してみて?><」って聞いてみると「なるほど!」ってなるかもしれない><(ソートの説明ではそれをした事無いけど><)
プログラミングであり設計って、自分が自然に行ってしまう事を「具体的にどうやっているのか?>< なぜ私はそれを行えるのか?><」って考えるのも重要だし、一対一で教える時であれば、そのままの問いかけをするのってかなり有用かも?><(でも学校の先生は1対1で教えるわけではないからそんなの無理そう・・・><)
人間が数字のリストから最小を探すときって実際にどうやってるんだろう.やっぱり最小の値を覚えておいて,目でリストを走査しながらそれを更新する,というのを無意識にやっている気がする.
そう考えると,人間はメモリが極端に少ない.リストを全部読み込んでからどうこうすることができない.筆算とかメモとかのいわば外部記憶を常に必要とするのはそのためかも.
この話って,選択しうる細かい単位の「手段」をどのようにより合わせれば,問題の解決に導けるか.という『いかにして問題をとくか ( https://www.amazon.co.jp/dp/4621045938/ref=cm_sw_r_tw_dp_U_x_-fP6Ab82JEJTV ) 』みたいな話になる.
そういう風にトップダウンで一度でばっちりキリッって決めるのは難しい事があるから、試作ってあるかも><
授業では若干そういう感じの方法論も習ったので、まあ産業的にはそれが普通なのかもしれないけど……
やりたいことと大雑把な仕組みはトップダウンで決まるけど、「この通りにコードを書けばおkやで」という「書くだけ」ステージには持っていかないなぁ(私は)
さっきの動画の秋田新幹線に乗る人も、秋田に移動したい、もっと言うと、ある時点で秋田に居るという状態にしたいのであって、秋田新幹線に乗りたいわけではない><ある時点で秋田に居るという状態にする為にどうすればいいのか?と考えて、秋田新幹線に乗るという選択肢を選ぶみたいな事が設計かも><
・・・で、設計ってトップダウンだよねって><(トップダウンじゃない設計って世の中になんかあるっけ?><;(トップダウンかどうかって視点だからあれだけど><;))
プログラミングできるようにするってつまり「設計できるようにする」なんだから、設計の考え方を教えられなかったら、細かい事ごちゃごちゃ教えられてもそれの活用方法なんてわからないの当たり前かも><ニンジンの切り方を教えられたってカレーは作れないんだから><
思考の /dev/null