レベルエンター山本大のブログ

面白いプログラミング教育を若い人たちに

BLOCKVROCKリファレンス目次はこちら

プログラミング学習で、本当に論理的思考が身につくか?

プログラミングを学ぶことでつく力ということで、「論理的思考」という言葉が使われることがあります。

 

でも論理的ってどういうことでしょうか。私は、はっきり定義をしらべたり教えてもらったりしたことはなく、なんとなく理解しているつもりになっていました。

 

教育の分野では、プログラミングで身につくのは「プログラミング的思考」だとされていますが、ますますよくわからないですね。

 

とりあえず、だれかがとってつけたプログラミング的思考についてはおいといて、「論理的思考」とは何なのかをきちんと自分の言葉にしたいと思います。

 

でも最初の1歩は、Wikipediaの力をかります。

 

論理学 - Wikipedia

ここでいう論理とは、思考形式及び法則である。これに加えて、思考のつながり、推理の仕方や論証のつながりを指す。よく言われる「論理的に話す、書く」という言葉は、つながりを明確にし、論証を過不足なく行うということである。

 

論理的であるというのは「論証」がキーになりそうですね。論証は「正しく説明が出来る」と言い換えてもよいのではないでしょうか。

論理の説明に「推理」も含まれますね。推理とは何でしょうか

 

すいり【推理】の意味 - goo国語辞書

既にある事実をもとにして、まだ知られていない事柄をおしはかること。

 

あてずっぽうの予測ではなく、実験結果や法則性、根拠のある資料などの事実をもとにして、考えるということですね。

 

つまり論理的であるということは、

事実(実験結果や法則性、資料など)を基に説明を過不足なくつなげられることであり、まだ知られていない事柄であっても事実を根拠に推し量って説明ができること

のようです。

 

論理的思考能力という言葉は、ヒトくくりになりすぎていそうですね。

私なりに分解してみます。

 

・事実を導き出す力

・事実を元に考える力

・説明する力

・過不足なく説明をつなげる力

・未知の事柄を、事実を根拠に推し量る力

 

こんなところでしょうか。

 

では、プログラミングで論理的思考は学べるのでしょうか。ひとつずつ考えてみます。

 

  • 事実を導き出す力

プログラミングでは資料や短いコードにより実験によって、そのコードはどのような動きをするべきかを確認しつ組み立てる必要があります。実験的に短いコードを実行してみたり、信憑性の高いドキュメントを確認する癖をつけられれば、「事実を導き出す力」は、プログラミングを学ぶ過程である程度は学べそうですね。

 

  • 事実を元に考える力

プログラミングでは「実現したいこと」は答えが示されているわけではなく、短いコードや機能の組み合わせで作り出します。実験結果やドキュメントの組み合わせを元にどうすれば求めるものが実現できるのか?を考えなくてはプログラミングはできないので、「事実を元に考える力」もプログラミングを学ぶ過程である程度は学べそうですね。

 

  • 説明する力

プログラミングそのものでは、説明する力は身につかないかもしれません。

作ったプログラムのプレゼンテーションなどによって身に着けたいですね。

 

  • 過不足なく説明をつなげる力

作ったプログラムのプレゼンテーションをする際に、論理の飛躍がないように気をつけられればよいのですが、プログラミングを学んだからといって、過不足なく説明がつなげられるとは限りませんね。説明を過不足なくつなげるには、説明をしてみて反応のフィードバックをえることや、そもそも国語の作文などを学ぶ方が近道かもしれません。

 

  • 未知の事柄を、事実を根拠に推し量る力

プログラミングの作業中は作ったもののバグや問題が次々と発生します。それらは学ぶ人にとってはすべてが未知の事項であることでしょう。バグや問題を解決するとき、事実を元に試行錯誤していきますが、当てずっぽうからだんだんと根拠を元に推し測っていけるようになっていきます。「未知の事柄を事実を根拠に推し量る力」は、プログラミングを学ぶことで一番学べそうな領域かなと思います。 

 

それにしても、単にプログラミングが出来るようになるまで学んでも、上記のような論理的な思考が学び取れるかどうかは学び方次第といえそうです。

 

レベルエンターで行っている教育も、現時点では「プログラミングを学んで論理的思考が身につく」とはいえないので、ここを強化したいと思います。

プログラミング学習では上手な試行錯誤の仕方が学べる

子供向けのプログラミング教育では、上手な試行錯誤の仕方が学べると良いと思います。以下の記事にある内容に一部同意しつつインスパイアされて書いています。

itpro.nikkeibp.co.jp

 

上手な試行錯誤を促すには、どのようなカリキュラムが良いかを考えながら、日々3歳の我が娘と遊んでいます。

 

彼女はレゴブロックで遊ぶのが大好きですが勝手に試行錯誤していろんなものを作り出しています。

最初は、こんな形作れる?というように親が例をみせてそれを作ってもらっていたのですが、なんだかそれで作れるようになったとは思えません。

課題提示型の教育では、あまり効果がなかったと言えます。

 

一緒に遊ぶときに「できあがったものを見せる」という行為に、すごくやる気が出てきているように思います。 

できるようになったことを、褒める。誰かと比べずに、そのこの成長を褒めるということかなと思います。

 

 

 

 

 

 

 

 

 

 

ハンマーと釘とプログラミングの上達と課題発見と課題解決

 人はハンマーを握ると全てが釘に見えるので、なんでもぶっ叩きたくなりますね。

 

プログラミングを少し覚えると、たしかに色々ぶっ叩きたくなるんですが、ぶっ叩くものを見つけるのが難しい。

 

課題発見は課題解決より難しいです。

課題解決そのものはゴールがはっきりしているので楽しい。

 

人を育成するときはハンマーを握らせて、ゴールのはっきりした課題を出そうということです。

 

自分を振り返ると、プログラミングは最初は手に職をつけるための、お勉強的な感じでしたが、面白さを感じられるようになったのは、自分でお客さんの要求通りのことを作れるようになったころですね。「人から言われた要求や要望を実現できる。」つまり、課題を解決することが面白かった。

 

でもその時、自分自身で課題を導き出すことはそれほど興味が湧きませんでした。

めんどくさいが先にきちゃう。

  

課題解決を一通りやれるようになると、課題発見して解決していくというさらに上位のことのほうがやりがいを感じられるようになります。

 

課題発見をやっていくときにも、課題発見のためのハンマーを渡し、釘っぽいものをたくさん打っていくといいんじゃないかなと思います。

 

 

 

 

1週間途切れてしまったコーディングの再開の仕方

自分の好きなツールや、大変力を入れているプロダクトを作っているときですら、1週間も時間をあけてしまうと、もうダメです。

もう一度エディタを開いてプログラミングに取り掛かるのが億劫になります。

がんばってエディタを開いても、他人のコードのように見えます。

 

そういうとき、エディタではなく作ったツールそのものの操作を始めます。

2、3分も触っていると、荒い部分とか、もっとこうしたら良いのにとかいう、言いようもない改善欲求が湧いてきます。

 

そういう改善欲求がふつふつしてきたときこそ、エディタを開くベストタイミングです。

 

 

Scratch 2.0 オンラインエディタ で 「ひらがな(にほんご)」にできないバグの暫定対処

 Scratch2.0を使っていて、急にひらがなにできなくなりました。

 
ディスカッションサイトでも話題になっていて暫定対処法がありました。
 
■Discuss Scratch 
 

"オンライン版のScratch 2.0 #456で現在「にほんご」(ひらがな)が正しく表示されない問題が発生しています。 
当座の回避方法としては、Shiftキーを押しながら地球アイコンをクリックして、「import translation file」を選び、オフラインエディターなどに含まれるひらがなの翻訳ファイル「ja_HIRA.po」を読み込みます。" 

 
以下に、弊社が持っているpoファイルをアップしておきます。