プログラミング的思考について周囲を見てて思うこと(1)

(以下は全て何の根拠もない私見。言いたいことを正しさ関係なく自由に主張している。いちおう裏にソースとかないこともないけど面倒なので略。推敲もあまりしてない。文字にするとなんか正しいこと言わなければならないとか,勝手に信じ込む人がいたりする界隈なので最初に注意。)

小学校プログラミングはプログラミング的思考と言って入れは全てが許される感が出ている。とりあえず(1)にしてみただけで、(2)以降があるかはわからない。言いたいことをざっと書いてるのでツイートして並べてるのと論理構成のレベルは大差ない。

プログラミング的思考については、半径3m以内でおおまかに2つの問題が観察されていて

  1. プログラミング的思考以外に文科か言ってる重要ポイントを全部落としてる
  2. プログラミング的思考そのものを誤解している

というのがある。基本的にこれらを言葉で説得して解くのはだめだと思ってて、まずプログラミング体験して!って言うようにしてる。

だいたい、お上で議論するには言葉が必要で仕方がなく言葉になっている、それも本質を切り取っているか怪しい言葉なんだから、そんなものをはいそうですかと素人がいきなり信じて良いわけがない。体を生まれてから1回も動かしたことない人が(プログラミングは世の多くとここが違うのがポイント)スポーツの極意を言葉だけで議論してたら、まず体動かせって思うでしょ?

制御構造 = プログラミング的思考と思う人たち

プログラミング的思考に戻る。わけのわからない人たちは、順次・反復・分岐がプログラミング的思考だとして、あろうことか低学年からそういうのを計画的にやっていくことが大事だといってる人々がいる。(私の周りにはいないが)

しかし、指導要領・解説・手引きを何度読んでも、小学校で順次・反復・分岐の概念をきっちり習得させろとは読めない。

手引きを熟読した限りでは、今回小学校に求められているレベルは、何かのやりたいことをコンピュータにやらせるために、人間感覚でなくちょっとだけコンピュータ感覚に合わせて手順を明示化してみて、実際にコンピュータで動かしてみてうまくいったりうまくいかなかったりしたプロセスやプロセスから得る学びがメインだと読める。そして、余裕があればそこで得た知見を少しふりかえったり抽象化して日常のいろんなとこで意識してみましょうね、で十分である。その範囲内において、制御構造の学習(特にこれを言語化して抽象化して学習すること)は必ずしも必要とされていない。

もちろん、コンピュータに何かやらせたいという意図があったときに、それを実現したいとなったときに、制御構造必要だよね、となったときに制御構造が登場するのが自然。それも最初は制御構造の用語は必要ない。問題にあわせて「こういうときとこういうときでわけて考えないといけないよね」「くりかえさないとね」といえば十分。用語とか概念は、そういう体験が積み重なってきたときに、で、そういうの良く出てきてるよね、実は名前がついてて・・・と体験を抽象化する形で制御構造の話を出したければ出せば済むだけの話である。

多角形の例を考えてみればよい。ねらいを達成するためにはループは必須ではない。分岐も登場しない。

小学校でフローチャートを万能としてる人々はね・・・

だいたい、フローチャートはできの悪い疑似言語として使われていることもあるぐらいである。フローチャートが素晴らしいのであれば、世のプロクラミング言語は全て フローチャートに置き換えられているはずである。そうなっていないということは、フローチャートが微妙なものだからということだと思わない?そういう人たちは技術の解説でUMLが出てきた話なんかもしらない。

Scratchのほうがフローチャートよりわかりやすいと思わない?だいたいScratch使ってる人がみんなフローチャート使ってる?使ってないでしょ。Scratch使いこなしてもの作ってる人がプロクラミング的思考できてないと思う?

良く読めば、要はやりたいことを機械に落とし込むのがプログラミングで、そのために必要な思考がプログラミング的思考ということは手引きからちゃんと読める。それに照らし合わせると、Scratchでもの作ってる人たちは、フローチャートは描けないけどプロクラミング的思考はできてますよ。だって、その思考なかったらコンピュータ動いてくれいし。そんなScratchでちゃんと作れてる人たちに、変なペーパーテストと評価基準でプログラミング的思考ができてる人に、あなたはプログラミング的思考ができてません、とか評価するの(プログラミング的思考そのものは本来は評価する必要ないが、各教科の評価規準の作り方がへたくそで実質的にそうなった場合。)、おかしさにもほどがある。

だいたい、まともな人が書いてることにフローチャートの話はほとんどでてこない。だいたいフローチャートの話ばっかしてるのは、ろくにプログラミングもしたことはないけどプログラミング教育と言ってる人々である。しかし、素人がそんな著者の属性判断してそれがまともかどうか判断できるかわからないから、それを信じる人が増える。有害極まりない。

プログラミング的思考の説明に「論理的」という言葉を充てたことが個人的には大失敗だと思ってて、一般人はそれにひきずられてると思ってる。

順次・反復・分岐そのものにフォーカスを充てるのは、アルゴリズムにつなげるという主張もある。しかし、それは高校段階の話である。中・高の内容そのものが理解もできてない小学校の人々が考えた、自分なりのつながるなんて有害無益になる可能性がある。

もちろん、情報の科学手理解の教育の一部として、アルゴリズムのような情報科学入門みたいなことをやることはありえる。情報の科学的理解は立派に情報活用能力の一部である。でも、ITあやしい小学校教員がそんな教育やってる余裕あるの?というかコンピュータ関連、それよりもっと教育してきてほしいことあるし。文字操作とファイル操作をできずに中・高に送り出してる人たちどんなにいる?プログラミング的思考だけじゃなくて、それちゃんと小学校で終わらせとけって指導要領や指導要領解説で書かれてますが?そんなにお上のこと持ち出してがーがーいうなら、都合の良いとこだけ読むなと言いたい。