(2017)
プログラマーの発想
中学校でもプログラミング教育が始まります。何度も繰り返されていることですが、この授業では、プログラミング的思考を養います。
たとえば、中学生にはおなじみの相関表。自分のランクを計算するエクセルシートを作るとします。
人間が目で見て作業する場合は、まず、1年生の評定の合計を2倍、2年生の評定の合計を2倍、3年生の評定の合計を3倍にしたものを合計します。その合計が、315から296まではAランク、295から276まではBランク、275から256まではCランクなどと相関表などを見ながら、自分のランクを探すことでしょう。
エクセル的な発想では、IF関数を使い、315から296まではAランク、295から276まではBランク、275から256まではCランクなどと条件分岐して、評定の合計点からランクを探すことになります。人間が目で見ておこなう作業を数式にする感じです。おそらく文部科学省が期待しているのはこのレベルでしょう。
しかし、人間がおこなう作業は、コンピュータには優しくありません。コンピュータは単純作業しかしないので、Aランク、Bランクの範囲を見て、どこのランクになるかを順番に探さなくてはなりません。Aランクから始めれば、Mランクは14回繰り返した後にたどり着きます。数式を入力するのも面倒ですし、どこかで数字を間違えてしまいそうです。1人なら一瞬で計算が終わりますが、学年の生徒全員の処理をさせる場合、他の処理を組み合わせたときに、タイムラグが発生するかもしれません。
エクセルの達人とプログラマーとは、同じエクセルを使っても違いが出ます。プログラマーはコンピュータの内部構造を頭に浮かべ、どのようにコンピュータに指示を出せばシンプルに、つまり負担を少なく計算させることができるかを考えます。シンプルにすると間違いが入り込む隙間を減らすことにもつながります。
ランクの計算では、ランクの範囲の規則性を探します。まず、315を最大値として、20点刻みになっていることに気づきます。ランクはアルファベットがABC…と規則的に並んでいます。このことは誰でも気づくことです。アルファベットはコンピュータ内部では、文字コードが隣同士、そのままの順番で並んでいます。
そこで、評定の合計を315から引き算をします。その数字を20で割り算します。小数点を切り捨てすると、ランクの上から何番目かが算出されます。そして、アルファベットの「A」の文字コードに足し算することで、ABCD…と文字コードが決定されます。その文字コードをJIS関数で文字にすることで、ランクが算出されます。
プログラミング教育では、プログラミング的思考を日常に生かして、多様化していく社会の中でも、より良い生き方をしてほしいという願いが込められています。プログラミング的思考を身につけると、より幸せになることができるということになります。つまり、世の中のプログラマーは、プログラミング的思考に長けているので、どの職業よりも素晴らしい人生を送っているということでしょう。
それにしても、上記の例を、どのように日常生活や人生に生かしていったらいいのか、悩んでしまいます。プログラミング的思考を身につけるよりも難しいような気がします。