プログラミング教育が抱える矛盾2

 プログラミング教育はいろいろな矛盾を抱えている。矛盾というか,おぼろげな部分というか,はっきり断言できない部分が多い。断言すればするほどに,例外が生じ,曖昧な領域が発生し,白かったものがどんどん薄暗い灰色になっていく。
 だから「プログラミング教育,難しくないですよ,さあやってみましょう!」というテンションで語っても,多くの人はその例外を,曖昧な領域を,グレーな部分を敏感に嗅ぎ取って「本当に簡単なの?」と疑念を膨らませる危険性を孕んでいる。

 まあでも,私も立場上プログラミング教育について断言するような語り口でやらないといけない部分もあるので,先の段落と大いに矛盾することを言わなくてはならない。
 「プログラミング教育は,めっちゃくちゃに,とんでもなく難しいですよ」

 なぜか。それはプログラミング教育が扱う中心的テーマが「思考」「思考活動」だから。プログラミング的思考というやつだ。フワッとした言葉でズドンと刺さる。手に余るような質量をもっている。思考という目に見えないものが求められているというのは,実のところ,めちゃくちゃに大変な話なのだ。現在の日本の学校教育が挑もうとしているのは,思考という山の頂なのだ。

 プログラミング的思考は,『手引』できっちり定義されているが,この定義が最大公約数的な言い回しなので,理解が難しい。これを丹念に切り分けて考えないといけない。
 ざっくり考えると,
「困難は分割せよ,問題は分解せよ」
「分解したものがなんであるか分析せよ」
「分析の結果,これまでの知識や技能と置き換えられるなら置き換えよ」
「置き換えたものを組み合わせて結論を導きたまえ」
になる。「分解→置換→組み合わせ」だ。

 だいぶ見えてきたような気がする。プログラミング的思考というのは,問題解決のための思考法であって,決してコードを書くための方法ではない。もっと汎用性のある「考え方」の話なのだ。だからこそプログラミング教育は特定の教科を名指ししない(算数科と親和性が高いことは留意するべきだが)。どんな教科領域においても入り込む度量をもっている。しかしながら,油断すれば何も見えなくなる。ギリギリに研ぎ澄まされた刃の上を歩くが如く。少しでも足を踏み外せば,それは私たちを両断する。そういう危うさが隠されている。