Jazzと読書の日々

iPadを筆記具として使う方法を模索します

明日のためのプログラミング教育 その1

プログラミングを小学生が習って役に立つものだろうか。パソコンにエラーを吐かれて挫折感を味わうだけじゃないか。あれって落ち込むんだよなあ。自分の至らなさを突きつけられる。自分で自分の傷をえぐるスタイル。子供たちがかわいそう。

まず、日常語で筋道立てる論理的思考の力が必要になるだろう。そのための国語教育がプログラミングよりも先になければならない。でもそんなこと、文科省は考えてなさそう。

まずは、論理的に日常語で考えるとはどういうことか。それを少し考えてみたいと思う。

目標

目標は、プログラミングに必要な思考法を日常語で行うことである。そのために必要な概念システムはなんだろうか。どういう教育を行えばそれが可能になるだろうか。それを明らかにしたいと思う。

まずプログラミングを構成するコンセプトって何だろうか。とりあえず思いつくのは、以下の3つである。アルゴリズム、構造化プログラミング、オブジェクト指向。この3つ。これが理解できないとプログラムを組むのは難しい。

この3つの概念から出発してみて、足りないと思えば概念を追加することにする。出来るだけ少ない概念で、ここあたりを記述してみたい。

アルゴリズム

まず、アルゴリズムについて考えてみる。アルゴリズムとは、行動の手続きである。どういう順番に何を行うかを記述する。ということは、「順番」という概念がすでに形成されていることが条件である。

時系列に並べること。これって発達的には何歳からだろう。少なくとも、時計を見て時間の計算ができる年齢じゃないかな。1日の過ごし方をスケジュール化するとか、一週間にやるべきことの段取りを考えるとか。

やるべきことを列挙して、それを依存関係に合わせて順列化する。プロジェクトを立て、必要なToDoをカテゴリー化する作業。問題解決の基本的な枠組みが理解できていないとアルゴリズムは組めない。

問題解決

問題解決は、現状の把握と目標の設定によって記述される。今がどういう状態で、それをどうしたいか意識できなければアルゴリズムは書けない。

あ、これって結構高度なことだ。同時に2つの時空間をイメージしながら、その差異を抜き出す。現在と未来の比較。それをするには、現在ではなく、また未来ではない、そういう場所に視点を設定しなければならない。

小学生や中学生のときに自分ができていた自信はないなあ。そんなこと、させるの?

欲求の自覚

現状の把握は、目標を先に設定しないと不可能である。現状の何に注目すべきかは、どの部分を変化させたいかという欲求によって規定される。ありのままに見る、ということは人間にはできない。必要なところを現状から拾い上げる。知覚とはそういう仕組みになっている。

デパートを歩いていて、トイレに行きたくなったら、そのときトイレの標識や矢印が知覚される。お腹が空いてきたら、フードコートに関する情報を視覚や聴覚でつかもうとする。それが生命体として身体を持つ人間の行動原理である。よほどの修行を積んだお坊さんでなければ、ありのままに見る、はムリだろう。それに、そういうお坊さんはトイレにもフードコートにも行けないだろう。ありのままに見る、とは、何も情報を拾い上げないのと等しい。

すると、アルゴリズムを組むとは、まず自分の欲求を知るところにある。いったい何をしたいと思っているのか。そこをつかまずに目標設定は不可能で、目標が不明瞭なら現状把握も不適切になる。

つまり、アルゴリズムとは自分の欲求を把握することである。まあ、いきなりはムリだ。授業としては「〜となるようにせよ」と目標込みの設問を解くことからだろう。

まとめ

でも、欲求を他者から与えられて、それを解くことを繰り返しても解決にはならない。自分の欲求に気づかない限り、アルゴリズムの順序は確定できない。そのことを次回に考えてみます。