プログラミングを勉強する前に日本語を勉強しろ

プログラミング教育が流行っていますね。
塾も増え、この前も「C言語を理解している方募集」なんて恐ろしい文句の講師募集のお手紙も来ました。

現在私は某アカデミーでロボットを教えてますが、もちろんプログラミングも同時に教えています。
今持っている生徒は小3〜中2。

そんな現場に2年ほどいて、現実が見えてきました。

まずはじめに、プログラミングに必要な技能とはなんでしょうか?
プログラムがプロセッサへの指令書であるという観点で考えると、答えは「説明能力」であると私は考えます。

プロセッサ相手に「過不足なく動作を手順化して一定の書式にまとめる」というのがプログラミングの本質であると考えます。

このうち「一定の書式のまとめる」の部分は子どもたちが学ぶ新技能ですし、我々が教える主たる部分の一つであります。世の中のプログラミング入門書なども、構文や細かい仕様、独自の概念、機能の使い方の説明で埋め尽くされています。これらをまとめて文法(フォーマット)とします。

問題が「過不足ない動作の手順化」です。
抽象化して「説明能力」とします。
結論から言うと、生徒らのプログラミングスキルの差はほぼ全て、この能力を原点にしています。


一般にプログラミング言語を学ぶとき、その内容はほぼ全て文法に関するものです。
これは英語などの言語でも同様です。

日常的なコミュニケーションを目的とするのであればそれで指しつかないでしょうが、あいにくプログラミングで要求される言語レベルはその先にあります。
そして残念ながら、それに必要な説明能力はプログラミング本でも授業でも「どうぞ自前のものをお使いください」という状態です。

この自前の説明能力というのは、どこで培うものでしょうか。
少なくとも義務教育過程では様々な場面で使います。
国語の文章題はもちろん、あらゆる科目で何かの説明を要求される場面は多いです。
といってもこのレベルだと「~だから」と一言で済んでしまったり、丸暗記で事足りたり(教員もそれを要求したり)と、効果があるかはわからない状態ですが...

「使う」からレベルを上げて「学ぶ」となると、途端厳しいです。
「物事を説明するときは~~しましょう」なんて授業ありましたっけ。
文章題の記述問題を数こなすうちに身につくものと日常で使う日本語の経験が、ほとんどの人の説明能力の元だと思います。

「日本語というフォーマットの学習を通じ、その奥にある説明能力を刺激する」というのが説明能力に対する教育のほとんどであると思います。(多分)

続く...