「プログラミングを学ぶ」「プログラミングで学ぶ」この言い方は,最初見たとき中々うまい言葉を使うなぁと思いました.プログラミング教育の本では,国語とか音楽とか他の教科の授業でも使えるんだという例がいろいろと乗ってますし,僕らもビスケットを活用して生き物の動き方を観察する学習に使ったりと,プログラミングを直接の目的としない学びに使っています.これが「プログラミングで学ぶ」ということですね.
ところが,これらは分類には向かない言葉でもあります.たとえば,プログラミングを学ぶ理由の1つに「論理的思考力」がつく,と言われていますがそれはどっちに属するのでしょうか.いつも真っ先に出てくる理由なので「プログラミングを学ぶ」に分類される感じもしますね.国語や音楽と比べればずっと前者よりです.しかし,論理的思考力は,プログラミングじゃなくても学べます.むしろビスケットのような,あまり深く考えないでさらっとやったらすぐに動いてしまうツールだと,論理的思考力をあまり使わないで作れたりするし(これはこれで,利点でもあり欠点でもありますが),パズルや将棋といったじっくり考えるゲームの方がずっと論理的思考力は付きます.ビスケットはプログラミングからパズル的な要素を排除したとも言えます.世の中のイメージではプログラミングがパズルっぽく扱われているけれど,僕はプログラミングの本質はパズルではないと考えているので,僕の考えでは「論理的思考力」は「プログラミングで学ぶ」に分類したいです.ようするに説明がごちゃごちゃ必要なのは,何かに問題があるってことですね.
プログラミングを学ぶ理由を分類するとしたら.
a)プログラミングでしか学べないこと
b)プログラミングじゃなくても学べるけど,ついでに学べる・楽しい・効率が良いといった効果があること
がよいでしょう.これだと定義が明確です.「論理的思考力」はついでに学べるので当然b)です.
b)については,それこそ本当に沢山あると思います.いま思いつかないだけで,コンピュータがいろんなことに応用されているのと同じくらい,人間の脳の訓練(学習)に関係するものであればほぼすべて,プログラミングで訓練を加速させることができるでしょう.たとえば,自分の理解を深めるために,他人に対して教えて上げる,ということをよくやります.他人に教えることで自分の理解を整理し,理解の足りない部分を見つけられるからです.その他人に相当するのがコンピュータになります.コンピュータがわかるように教えるということはプログラミングそのものですから.ビスケットで10進法の計算をプログラムするという課題がありますが,それは算数での計算というものを見直すことそのものです.昔の人工知能の課題は,人間の脳の働きを理解するために人間と同じ動きをするプログラムを作る,ということでした.
たとえば,プログラミングはモノづくりの基本であるとか,創造性教育によい,といったのは全部b)です.モノづくりということを言うなら,手を動かして工作をすることと比較してどっちが良いかという話になりますし,創造性教育だって美大を出た先生たちの工夫のレベルは相当高いので,太刀打ちできないです.もちろん工作とくらべて,プログラミングは試行錯誤のサイクルが圧倒的に早いとか,ビスケットのお絵描きのカラーパレットは水彩絵の具よりも色のことをよく考えて作られているとか,そういう議論をして説得できる可能性もありますけど.でもやっぱり五分五分だと思います.アナログの奥深さを全部捨ててまでそれが重要かって話になりますからね.
b)ばかり強調しすぎるのは危険です.「プログラミングを学ばなくてもよい」と考えている人たちの格好の反論材料になります.優秀な教師は教え方の工夫がすばらしいわけですが,そんなところにまで得体の知れないツールを強制されるのは我慢がならないはずです.いろんなものはいろんな教え方があっていいのです.
もう,b)を言うのはやめましょう.議論が収束しないと思います.言いたければ,こんな可能性もあるんだというヒントとして与えるにとどめるのがよいでしょう.控えめにです.
プログラミングを学ぶ理由を万人に説得するには,a)の部分「プログラミングでしか学べないこと」という点を追求するしかないと思います.
長くなったので,a)を掘り下げることはまた次回にしますが,要約すると.
コンピュータを何らかの形で使う人(つまりほぼ全員)は,コンピュータとは何かを学ぶ必要がある.何かを知らないで使うのは危険.
コンピュータは類似するものが無いので,なにかに例えて説明することは非常に難しい.座学ではコンピュータとは何かは学べない.ところが,この「難しい」ということを知らない人に説明することも難しい.つまり堂々巡り.
これは,体験を通じてしか学べない.すなわちプログラミングをするしかない.
補足
実はプログラミングだけではなく,他にも似たような分野がある.たとえば演劇とか.逆に座学で学べるものはどんどん学校に入って行った.座学では学べない重要なものが沢山取り残されている.
ところが,これらは分類には向かない言葉でもあります.たとえば,プログラミングを学ぶ理由の1つに「論理的思考力」がつく,と言われていますがそれはどっちに属するのでしょうか.いつも真っ先に出てくる理由なので「プログラミングを学ぶ」に分類される感じもしますね.国語や音楽と比べればずっと前者よりです.しかし,論理的思考力は,プログラミングじゃなくても学べます.むしろビスケットのような,あまり深く考えないでさらっとやったらすぐに動いてしまうツールだと,論理的思考力をあまり使わないで作れたりするし(これはこれで,利点でもあり欠点でもありますが),パズルや将棋といったじっくり考えるゲームの方がずっと論理的思考力は付きます.ビスケットはプログラミングからパズル的な要素を排除したとも言えます.世の中のイメージではプログラミングがパズルっぽく扱われているけれど,僕はプログラミングの本質はパズルではないと考えているので,僕の考えでは「論理的思考力」は「プログラミングで学ぶ」に分類したいです.ようするに説明がごちゃごちゃ必要なのは,何かに問題があるってことですね.
プログラミングを学ぶ理由を分類するとしたら.
a)プログラミングでしか学べないこと
b)プログラミングじゃなくても学べるけど,ついでに学べる・楽しい・効率が良いといった効果があること
がよいでしょう.これだと定義が明確です.「論理的思考力」はついでに学べるので当然b)です.
b)については,それこそ本当に沢山あると思います.いま思いつかないだけで,コンピュータがいろんなことに応用されているのと同じくらい,人間の脳の訓練(学習)に関係するものであればほぼすべて,プログラミングで訓練を加速させることができるでしょう.たとえば,自分の理解を深めるために,他人に対して教えて上げる,ということをよくやります.他人に教えることで自分の理解を整理し,理解の足りない部分を見つけられるからです.その他人に相当するのがコンピュータになります.コンピュータがわかるように教えるということはプログラミングそのものですから.ビスケットで10進法の計算をプログラムするという課題がありますが,それは算数での計算というものを見直すことそのものです.昔の人工知能の課題は,人間の脳の働きを理解するために人間と同じ動きをするプログラムを作る,ということでした.
たとえば,プログラミングはモノづくりの基本であるとか,創造性教育によい,といったのは全部b)です.モノづくりということを言うなら,手を動かして工作をすることと比較してどっちが良いかという話になりますし,創造性教育だって美大を出た先生たちの工夫のレベルは相当高いので,太刀打ちできないです.もちろん工作とくらべて,プログラミングは試行錯誤のサイクルが圧倒的に早いとか,ビスケットのお絵描きのカラーパレットは水彩絵の具よりも色のことをよく考えて作られているとか,そういう議論をして説得できる可能性もありますけど.でもやっぱり五分五分だと思います.アナログの奥深さを全部捨ててまでそれが重要かって話になりますからね.
b)ばかり強調しすぎるのは危険です.「プログラミングを学ばなくてもよい」と考えている人たちの格好の反論材料になります.優秀な教師は教え方の工夫がすばらしいわけですが,そんなところにまで得体の知れないツールを強制されるのは我慢がならないはずです.いろんなものはいろんな教え方があっていいのです.
もう,b)を言うのはやめましょう.議論が収束しないと思います.言いたければ,こんな可能性もあるんだというヒントとして与えるにとどめるのがよいでしょう.控えめにです.
プログラミングを学ぶ理由を万人に説得するには,a)の部分「プログラミングでしか学べないこと」という点を追求するしかないと思います.
長くなったので,a)を掘り下げることはまた次回にしますが,要約すると.
コンピュータを何らかの形で使う人(つまりほぼ全員)は,コンピュータとは何かを学ぶ必要がある.何かを知らないで使うのは危険.
コンピュータは類似するものが無いので,なにかに例えて説明することは非常に難しい.座学ではコンピュータとは何かは学べない.ところが,この「難しい」ということを知らない人に説明することも難しい.つまり堂々巡り.
これは,体験を通じてしか学べない.すなわちプログラミングをするしかない.
補足
実はプログラミングだけではなく,他にも似たような分野がある.たとえば演劇とか.逆に座学で学べるものはどんどん学校に入って行った.座学では学べない重要なものが沢山取り残されている.
※コメント投稿者のブログIDはブログ作成者のみに通知されます