見出し画像

「順番がわからない...」子どもたち

なぜ「逐次処理」が腑に落ちないのか...


子どもたちにプログラミングを教えていて、わかったことがあります。それは、どうも「順番に実行する」という概念が、いつまでたっても腑に落ちない子が一定数存在するということです。

プログラミングにおいて、一番基本となるものの考え方は、「プログラムは順番に実行される」というものです。これを「逐次実行」「逐次処理」などと言ったりします。これは、Scratchに限らず、どんなプログラミング言語でも普遍的な、この世界では大原則といっても良い考え方です。ところが、ちょっとプログラム作らせてみると、「どうしてそうなるの?」という状態から、いつまでたっても抜けることができない子がたまにいるのですね。もちろん、人によってその理解度に濃淡あるのも事実ではあるのですが、それでも一般的な、普通の子に比べると、明らかにこの部分の理解が進まない子がいるように思えるのです。

一番かんたんな例ですが、「進む向き」を決めてから、そっちに向かって「動く」のが普通です。なので、ここでは右のプログラムの方が良いのですが、いつまでたっても左側のプログラムを作って涼しい顔してる子がいます。もちろん、この場合は、「○度に向ける」というプログラムの意味を理解していないということも考えられるのですが、いろいろ話して、説明をつくしても、腑に落ちない感じなんですね。

もちろん、そんなにたくさんいるわけではありません。わたしの印象だと、全体の1〜2%ではないかと思います。でも、わざわざプログラミング教室にやってくる子どもたちの間でそれくらいの比率ということは、恐らく普通にはもっと存在するのではないかと思うのです。

当然、日常的に「プログラムは並べた順番に動く」という事は、とにかく口うるさいくらい言ってます。「プログラミングで、一番大事なことは?」と聞くと、もう耳にタコができてる子もいて、「順番に動くことでしょ」とオウム返ししてくれるんです。でも、これは、単に言葉を暗記しているだけで、その言葉の意味するところが、ちゃんと腑に落ちてるかというと、まったくそうではないケースがあるわけなんです。

こういう子どもが作ったプログラムを見て、「じゃあ、最初からプログラムの動く順番を確認しよう」「最初に動くブロックはどれ? 指さしてみて」とか言いながら、一緒に確認すると、たいてい「○回繰り返す」「ずっと」のループ系が組み合わさると、もうプログラムの動作順を終えない状態になったりするのです。

そんな子でもたいていは、当たり判定プログラムとかは丸暗記できるので、初歩的なScratchのゲームとかは作れるのですが、この逐次実行の概念が腑に落ちてないと、「変数」でつまづくことが多いと思うのです。たとえば、「1秒に1ずつふえる変数を作ってみて」みたいなことをやらせると、もう全く呆然としちゃって手も足も出なくなったりします。逆に、変数をあまり苦にせずにプログラミングを進めていける子は、まずだいたい「逐次処理」が腑に落ちてないということはないのだと思うのです。

そして悩ましいのは、今のところこのような状態に陥る子どもたちに、決まった類型が見いだせないのですよね。一概に「勉強の成績が良い悪い」というようなものとは違うものみたいなんです。

確かに残念ながら、「多分成績あまり良くないんだろうなあ…」と思える子の中に、そういう子がいるケースはあるように感じます(うちでは生徒さんの学校の成績など聞いてませんので、正確なところはわからないのですが、でも教室での態度を見たり、その子と話していれば何となくわかるものです)。ところが、中学受験を目指して有名進学塾に通ってる子の中にもいたりするから、悩ましいわけです。

「人間の能力」というのは、様々な分野の能力が合わさって形作られているはずです。IQなどの指標も、さまざまな能力をそれぞれ数値化して、その平均値でものを言ってるわけです。つまり、同じIQの人だって、ある特定分野の得意、不得意があるというのは大前提です。すると、その「特定」分野の中に、どうも「順番を管理する」という分野があり、それが未発達な人が存在するような気がしています。

そういえば、大昔のサラリーマン時代、偏差値の高い学校を出て入社した新入社員が、後に「仕事が出来ない」と評価されるケースは、たいていが「仕事の優先順位づけができない」とか「段取りが悪い」とか言われていましたね(もう一つあるとすれば、それは「性格が悪い」でしたね…)。もしかして、そういう人たちって、記憶力とかは人より優れているのに、この「順番を管理する」能力が、ちょっと人より劣っていたとか言うことはあるのかなあ….などと考えてしまいます。

そして、子ども時代に、「その能力を鍛えるためには、一体どうすれば良いのか?」ということが、今のわたしのひとつのテーマのようになっています。一般的には、「プログラミングで、こういう能力が鍛えられる」で、全く問題ないとは思うのですが、ここでは一歩進んで、「普通にプログラミングをやっても、尚これがわからない子が、どうやったらわかるようになるのか?」ということなのですね。これは、永遠のテーマかもしれませんね。