探究型プログラミング学習(探プロ)

プログラミングの考え方を学んで、未来を創る力を手に入れる

プログラミングの考え方を学んで未来を創る力を手に入れる

【コラム】探プロのコンセプトを再び見直しています

このところ、探プロのコンセプトをもう一度見直しています。

大学院を修了した時点の探プロがVol.01だとすると、今のものがVol.02。

そしてまもなく、Vol.03が出来上がりつつあります。

 

プログラミングの考え方を学ぶこと、21世紀型スキルの修得が目的であることは変わらないのですが、言葉で繋ぎきれていないところを頑張って繋げようとしているわけです。

 

一番の目的は、これまで当たり前のように使ってきた

「プログラミングの考え方」

とは何か?

それを理解し、使いこなせるようになるとどんな嬉しいことがあるのか?

そして、21世紀型スキルの修得とはどう関係するのか?

といったところです。

 

「プログラミングの考え方」として、これまで

・インタフェース

アルゴリズム

ポリモフィズム

・モジュール化

などを紹介してきましたが、他にも

・関数

・例外処理

・マルチスレッド

などがあります。

 

まだまだあります。でも、この中で一体、何を伝えるべきなのか?

ということにもう一度立ち返って考えてみました。

 

そもそも、プログラミングの考え方というのは何を目指しているのかというと

「モノゴトの効率化」

です。

他にもあるのではないか?といろいろ考えたのですが、どうやらこれに尽きると断言して良さそうです。

全ての「プログラミングの考え方」は、モノゴトを効率的に処理することを目的としている

 

前回、「プログラミング的思考」について自分なりに考えてみました。

そして、プログラミング的思考はあくまでも「効率的」であることを目指していると理解しました。

 

プログラミング的思考と探プロのいう「プログラミングの考え方」は全く別のものですが、「効率化」を意識している点では同じです。

 

あらためて言葉を定義しておくと...

 

プログラム=命令の集まり

アルゴリズム=命令を実行する順番とルール

プログラミング=アルゴリズムの通りに動くプログラムをつくること

 

そしてプログラミングの考え方とは

モノゴトを効率良く処理するためのアルゴリズムであり、最適解を導くために構造化する考え方

といえます。

 

私たち大人は日々、時間に追われているので常に効率化を求めています。

1つ1つの時間が短くすめば楽になる(はずだ)からです。

 

一方で子どもはどうでしょうか?

彼ら彼女らは効率化を求めることがあるのでしょうか?

 

こたえは否、です。

子どもには時間が膨大にあります。

もちろん24時間という物理的な時間は大人も子どもも共通なのですが実際に、膨大な時間があると勘違いするほど子どもたちの時間に対する概念は大人とは異なるようです。

 

そうなると、なぜ子どもたちは「効率化」を目的とする考え方を学ぶ必要があるのでしょうか??

 

それはきっと、人間はこれまで以上に"付加価値の高い"活動に専念しなければ生き残れないからです。

機械化、仕組み化できる仕事はコンピューターにお任せして、人間は人間にしかできない仕事をすべき。

ここ数年ずっとそんな話を聞かされている気がします。

 

モノゴトの効率化を進めると、空き時間が生じます。

そうしたらその空き時間を、付加価値の高い活動に振り向ければよいわけです。

 

こうやって考えていくと、以前から疑問だったことが1つ解決しました。

プログラミング的思考を身につけることやコンピューターリテラシーを身につけることの重要性を語る中では、コンピューターを使いこなす人材であることや論理的に問題解決できる人材であることが求められるのですが

私は、効率化を目指したり論理的に考えたりする点では、人間よりコンピューターの方が得意なはずだと思っています。

だから、そういった目的のためにプログラミングを学ぶことがどうにも納得できなかったのです。

ムダじゃないかと。

 

こうした矛盾は、人間がより付加価値の高い活動、創造的な活動に専念するために、効率化可能なところは徹底して効率化する、と捉えることで解決します。

 

実際に、家事なんかでもそうですよね。

洗濯機や食洗機を使うことで家事時間を大幅に減らすことができる。

その空いた時間は、趣味や子どもと遊ぶ時間として使える。

だから、効率化するんですよね。

逆に、時間を捻出しても使い道がないのなら効率化する必要がありません。

 

そんなわけで、子どもたちの余白時間をより増やすためにも、効率化するための考え方は知っておいた方が良い。

そう考えると、プログラミングを学ぶ意味が分かってくると思います。

 

ここまでは、主に問題解決の場面でプログラミングの考え方を活用することを想定して考えてきました。

次に、問題発見の場面でプログラミングの考え方を活用することや、その活用レベルが年齢と共にどのように変化するのかについて掘り下げてみます。

 

つづく。

@tanpro-lab