論理的思考の向上を目指さないプログラミング教育

何かというと「プログラミング教育は論理的思考能力の向上を目指す」と決めつける人たちが多いので,彼らに届くかどうかわからないけれどもちゃんと言います.

論理的思考能力を鍛えたければ,他のもっといい方法があります.よく考えたゲームとか.プログラミングは筋が悪いです.

モダンな(笑)プログラミングは論理的を求めてはいません.

実はひどいプログラミングツールを使ってプログラムを作らなければならない場合に,論理的思考能力がなければなにもできない,ということがあります.上記「プログラミング教育は論理的思考能力の向上を目指す」と主張している人たち,そしてそれに反論している人たちは,ひどいプログラミングツールを使ってプログラム作った(しかし動かなかった)という経験が強く残っていて,そんな狭い考えに支配されているのだと思います.ここで言えるのは,ひどいプログラミング=論理的思考能力必須 です.

コンピュータは人間のいろんな仕事を助けてくれます.プログラミングについても同様です.人間の肉体的な手助けをするロボットと比べて,プログラミングは全部電子データの中でできるので,完璧に手助けしてくれます.その助けは突き詰めてゆくと,人間が論理的に考えなければならないことをコンピュータが自動的に先回りして見せてくれるということでもあります.論理的思考はコンピュータに任せて,人間はその先のことができるということです.

僕のひどいプログラミングの話をすると,何か繰り返しがある,繰り返しを終了する式は a < bなのか a>bなのか,それともそれぞれに=が入るのか,ちゃんと考えたくない.問題がちゃんと定義されていれば,アルゴリズムをしっかり追って,プログラムを作れば一発で正解できるはずです.ところが,コンピュータを使うということは,失敗してもなにも壊れたりしないし,誰も損しないのですから,上記の4通りの組み合わせを全部試してみる,というやりかたもありなわけです.で,やってみて,いつまでたっても終了しないとなると,それは不等号が逆だったらしいし,5回繰り返して欲しいのに6回繰り返したとなると=を外してみる,みたいになります.そして,何度か動かしてみて,おかしいところが無くなってプログラムが作れたということがわかります.論理的には考えなくても,失敗を繰り返せばなんとかなるんです.

ビスケットはそのスタイルを推奨しています.まずは右に動くメガネをつくります.それで基本的な動きはよいとして,そこで壁にぶつかるといった特別な状態になったときにメガネを追加する.走らせて気に入らないことがあればメガネを追加して動きを修正する.矛盾したメガネができても気にせずに,全体としてゴールに近づいてゆく.というスタイルです.

迷路を進ませるゲームとして,プログラミングを教えるツールがあります.命令のブロックをならべて,実行させるとそのプログラムの通りにキャラクターが動いて,壁にぶつかったらエラーで停止するというもの.僕はこれが大嫌いです.適当に前に進んで,壁にぶつかったら前に進むブロックが一つ多いみたいだから,一つ減らして,という風に動かしてみてまずかったら修正する,というやりかたでなにがいけないのでしょうか.

なにが嫌かというと,動かす前にじっと考えて正解を探す,という行為はまったくプログラミングの本質ではないにも関わらず,そのパズルを解く教育をすることがプログラミング教育だと思われてしまっているということです.そんなしょぼいレベルはコンピュータに任せて,人間はもっと上のレベル,コンピュータに何をやらせるか,を考えられるようにするべきなのです.

シェアする

  • このエントリーをはてなブックマークに追加

フォローする