DISTRICT 37

なにか

プログラミングを学ぶ意味

子供にプログラミングを習わせる親が増えているらしい。実際にプログラミング教室なんかがいくつかあって驚いた。「プログラミングを習わせる意味がどうも分からないんだよね」という人がいたのでちょっと考えをまとめてみた。

プログラミングは論理的に考える実践になる

プログラミングは論理的に考える技術を実践するということに尽きると思う。

ここにいくらかのおはじきがあり、その個数を数えてください

という問題があったとして、どのように解くのがいいのだろうか?解き方としては何通りもあると思う

回答例1:一つ一つ数える

おはじきの数が何個であろうと一つ一つ数えれば正解にたどり着く

def count(n):
  count = 0
  for i in n:
    count += 1
  print("おはじきは%d個" % count)

pythonでサンプルコードを書いてみるとこんな感じになるかと。nはリストを想定しているので、本当ならlen(n)で一撃だけど、とりあえず実直に数を数えるということで。

回答例2:2個ずつ取って、取れた回数×2とあまりの数を足す

一つ一つ数えるパターンの発展。おはじきが偶数ならとれた回数×2で答えが出て、奇数なら余りは1出るはずなのでそれを足したら全部数えられる。2じゃなくても3でも4でも5でもいい。実際に一目で数えられないくらいのモノを数えるときに「にーしーろーやーとー」と2こずつ数えてる人も多いかと。つまりそれです。

回答例3:5%くらいを取って母数を推測する

それが統計学よ!秋山仁の声が聞こえてきそうだが、これも一つの回答。おはじきの個数が多いほど力を発揮する。

この回答例があってるかあっていないかは別として、問題解決法を形にするっていうのがサンプルコードにしたようにプログラミングになるのかと思うんですよね。しかもその論理に問題があればエラーとして終了するし、問題が無ければ答え合わせができる。

論理的思考の技術の本がずらずらと本屋なり図書館なりに並んでいて、いろいろとノウハウがあると思うけどそれを実践で試せるっていうのがプログラミングのいいところかと。こういった部分のトレーニングは数学(算数)の問題集を解くのでもいいとは思うけど、パソコンでゲームのようにやれば興味が湧くのだろうというのが根幹にあるのだと思いますね。

ちなみに、効率のいい方法というのがいくつかあって、それはアルゴリズムと呼ばれている。

学校でプログラミングが必修に?

小学校段階におけるプログラミング教育の在り方について(議論の取りまとめ):文部科学省

リンク先の中でも論理的思考が云々という話が当然出ています。人材育成とかも重要かとは思いますが、このポイントを見過ごしている方が以外にいないのかなと思っています。このプログラミング教室に通わせる親が増えているという状況はぜひこのポイントを汲み取っていただきたいなと思います。

教育とプログラミング

こんなの大人になっても使わねーよと呟くことはどの時代のどの世代の子供にもあると思う。プログラミングが必修化したらきっと全国の小学生に言われると思っています。確かにプログラムに関して言えば結局は何を作るかのほうが大切だと思うんですよね。プログラムはただの道具というか部品なので。では何かを作るために、どのようにアイデアを出すか?それには結局基礎となる「勉強」が必要になるんですよね。「算数」だけじゃなく「国語」も必要だし「社会」も必要。しかもそれは大人にならないと気付かなったりする、いわゆる教養ってやつですね。

lootone.exblog.jp

たけしもこのように言っているそうです。

ということで個人的な感想を言えば、プログラミング教室ってのにあまり必要性を感じないというのが正直なところですね。もちろん自身がプログラマーなので、自分で教えられるよという事もあります。論理的思考という面ではプログラミングを通して鍛えることもないんではないかなと思っています。数学の問題集でもいいし、ディベートでもいいし、なんならゲームだっていいし、教材はいくらでもあるのかと。

ですがいろいろなことに興味を持たせるという事に対しては否定はしませんし、必要だと思っています。それがプログラムだったら、親としてというよりもプログラマーとしてうれしい事だというだけですね。

なんだか取りまとめのない論理的思考が抜けてる文章を書いてしまったなと反省