プログラミング思考って何?がわかる練習問題

2016/10/31 11:30

【問題】すべてのマスに線が引けない!? そんなパターンが生じるのはなぜか(AERA 10月31日号より)
【問題】すべてのマスに線が引けない!? そんなパターンが生じるのはなぜか(AERA 10月31日号より)
【答え その1】マスを2色に塗り分けたとき、片方の色の数が多くなる場合があるからです(AERA 10月31日号より)
【答え その1】マスを2色に塗り分けたとき、片方の色の数が多くなる場合があるからです(AERA 10月31日号より)
【答え その2】見方をちょっと変えるだけで、問題はグッと簡単になり、コンピューターにも解きやすくなる。これがプログラミング思考です(AERA 10月31日号より)
【答え その2】見方をちょっと変えるだけで、問題はグッと簡単になり、コンピューターにも解きやすくなる。これがプログラミング思考です(AERA 10月31日号より)

「プログラミング思考とは何か」という問いに、文章で答えることは難しい。理解するには、プログラミング思考でなければ解けない練習問題にトライするのが一番だ。

 この夏、「senseicode」(センセイコード)という学校の先生に向けたサイトで、あるブログ記事が話題になった。

 タイトルは、

「『プログラミング』と『プログラミング的思考』の違いを、分かったつもりになれるヒント」

 書いたのは、同サイトの運営者、上杉周作さん(28)だ。

 米カーネギーメロン大学でコンピューターサイエンスを学び、学生時代にはApple、facebook(アップル、フェイスブック)などの企業でプログラマーを経験。現在、シリコンバレーにある教育関係のメディア企業で働く。

 記事のきっかけになったのは今年5月から6月にかけて、文部科学省が行った小学生のプログラミング教育に関する有識者会議だった。

「会議ではプログラミング言語そのものを教えるのではなく、コンピューター的な考え方、つまりプログラミング思考を教えるべきだという声が上がったそうです。では、プログラミング思考とは何か。そう悩む先生たちのヒントになればと思い、クイズを使って、解説記事を書きました」(上杉さん)

●「見方を変える」が第一歩

 ここで「ヒント」として紹介されている問題が、「すべてのマスにルール通りの線が引けるように、マス目のどこかに二つの×を書き込む」だ。

適当に×を書き込むと、ルール通りに線が引けるときと引けないときがあることがわかる。×の位置を変えながらすべてのパターンを試していけば答えはわかるが、

「こうした“力ワザ”は、プログラミングが得意とするところ。とはいえ、マス目が増えるとコンピューターでさえ計算に時間がかかる。それに、なぜマスが埋まるのか、埋まらないのか、コンピューターは教えてくれません」(同)

 ところが、マス目をチェスボードのように交互に塗りつぶしてから問題を解いてみると……答えはもちろん、なぜそうなるのかが、あれよあれよと見えてくる。

「力ワザで答えを探すのではなく、マスを塗ってみるなど問題の見方を変えると、プログラムはグッとシンプルになります。コンピューターの計算時間も短くなる。この『見方を変える』という発想が、プログラミング思考の第一歩なんですね」(同)

(ライター・福光恵)

AERA 2016年10月31日号

あわせて読みたい

  • AIがディープラーニングで名画を描く 好きな画家のタッチをミックスした斬新な絵

    AIがディープラーニングで名画を描く 好きな画家のタッチをミックスした斬新な絵

    AERA

    11/13

    優柔不断もプログラミング思考が解決? 自信をもって判断できる「定量化」とは

    優柔不断もプログラミング思考が解決? 自信をもって判断できる「定量化」とは

    AERA

    10/29

  • 自分が意図した通りに人を動かすには? 部下が思う働きやすい上司

    自分が意図した通りに人を動かすには? 部下が思う働きやすい上司

    AERA

    10/28

    「ラーメン屋」は実によくできたプログラム? プログラミング思考は仕事を変える

    「ラーメン屋」は実によくできたプログラム? プログラミング思考は仕事を変える

    AERA

    10/29

  • 家事の分担をめぐるケンカも解決!? プログラミング思考のすごさとは

    家事の分担をめぐるケンカも解決!? プログラミング思考のすごさとは

    AERA

    10/30

この人と一緒に考える

コラムをすべて見る

カテゴリから探す