中学校までに自分の作ったプログラムがうまく動かないという経験すれば十分

情報化社会に生きるすべてに人が持っておくリテラシーとして「コンピュータで何かしたかったらプログラムを用意しないといけない」「プログラムは人間が作るものなので予想外の動きをするときがある」「ゴミを入れたらゴミが出てくる」という3つのことだけを体験を通して知っていれば十分だと思う。

この3つを分かっているならば、「プログラムは自然に発生する」「計算機の出力結果は常に正しい」という認識が崩れる(崩れやすい)ので、ハードウェアの値段だけ考えて、ソフトウェアの値段を考えないとか、保守は無料だと思うとか、異常値が出たときにその異常値が妥当かどうか検討しないとかが少なくなると思う。

なので、小学校〜中学校までにプログラムを組んでみて、自分の作ったプログラムがうまく動かないという経験をするのは重要だと思う。目的は、プログラマー育成でなく、上述のリテラシーの獲得。プログラマ育成目的ならば、義務教育における計算機科学の教育は人員、授業時間(他の教科との兼ね合い)からして足りない。他の教科との熾烈なポスト&授業時間確保争いをしても、それによって生み出されるプログラマーの数は費やしたコストに見合わないと思う。

まつもとさんの懸念「学校の授業であるということは、なんらかの評価をする必要があるわけですが、これがまた困難です。」はもっともだと思う。そして、この懸念の解決法として小飼さんの「採点できないなら、しなければいいのに」に賛成。プログラマー育成でなく、上述のリテラシーの獲得が目的ならば、採点なしの授業で問題ない。チェックすべきなのは、以下のことだけ。

  1. ある問題を解くプログラムをちゃんと仕上げられたかどうか
  2. そのプログラムの使用結果をちゃんと見届けたかどうか
  3. プログラムが動かなかったり、予想外の動きをしたときにどうしてそうなったのかを追求したかどうか

1年ですべてを終わらせず、9年間かけてよいのであれば、4年生〜6年生で学習用プログラミング言語で「プログラミング」という概念を覚えてもらい、中学校1、2年で1度ずつ、1回4時限でプログラミングに挑戦してもらえば十分じゃないかと思う。

「コンピュータで何かしたかったらプログラムを用意しないといけない」「プログラムは人間が作るものなので予想外の動きをするときがある」「ゴミを入れたらゴミが出てくる」を理解するための授業ならば、評価は不要で、むしろ有害。評価するためには正解や基準を用意しなければならず、プログラミングに興味を持ったのに、正解や基準に合わなかった人を排除してしまう。給食や芸術観賞、社会科見学と同じように「こういうものが存在するんだ」という認識を持ってもらえればそれで十分としないといけないと思う。