プログラミングの関心がプログラマーを目指そうとしている人以外にも広まっています。
親子でプログラミング教室に通い始めた方もいらっしゃるようです。
プログラミングの小学校義務教育化が始まる2020年、東京オリンピックの年に、国民総プログラマー計画が始まるのでしょうか?
それは、わかりませんが、少なくとも、プログラミング言語だけをクローズアップしているメディアばかりが目立つことに危惧を覚えます。
論理的思考、問題解決能力を身に付けるさせる目的でプログラミングの授業を導入するようですが、もっと本質的なことをどれだけの先生が教えられるのでしょうか?
今回は、プログラミングを勉強する前に前提となる「アルゴリズム」の重要性をきちんと理解していただきたいです。
アルゴリズムとは何か?
なぜ、プログラミングという言葉だけがひとり歩きしているのでしょうか?
とても疑問です。
だいたいが、問題を解決する手順を考えて、それをプログラム言語で書いていく作業を総称して、プログラミングと呼んでいるようです。
楽しくパズルで遊んでいるかのごとく、プログラミングを覚えているうちに、論理的思考や問題解決能力が身に付きますとお気楽なことを言っている人たちが多すぎます。
なぜ、そこに「アルゴリズム」という言葉が入ってこないのか?
理由は、単純です。
アルゴリズムを取り上げて、教えるのが非常に難しいからです。
そこをうやむやにして、全てを包み込んでプログラミングと呼んでしまっているのだと推測します。
このようなうやむやな状態で果たして、小学校での義務教育化はうまくいくのでしょうか?甚だ疑問です。
極論を申せば、プログラミングなど教えずとも、アルゴリズムを徹底的に教えるだけで、かなりの論理的思考や問題解決能力が身に付きます。
ここに、私が、プログラミングスクールが意味のないものだと言っている根拠があります。
プログラミングをスクールで学ぶ前に考えてほしいたったひとつのこと
いずれにしても、プログラミングを勉強する上で避けては通れないのが「アルゴリズム」なのです。
では、この「アルゴリズム」とはいったい何なのでしょうか?
分かりやすくいうならば、
「なにかをするための手順」です。
この一言です。
難しく言うならば、なにかをするということの「なにか」は問題と捉えます。
なにかをするということの「する」は解決するということです。
ですので、まさしく、問題を解決するための手順、道筋が「アルゴリズム」といえます。
アルゴリズムを勉強すれば論理的思考が身につくのか?
プログラミングという言葉に比べ、かなり地味な印象の「アルゴリズム」ですが、とても重要なものであることは、プログラマーの人たちなら十分把握していると思います。
大学や専門学校では、必ず、アルゴリズムを専門的に勉強します。
考えたアルゴリズムをプログラム言語に落として、PCに打ち込み、動作を確認するという演習形式が多いかと思います。
実際に、アルゴリズムを勉強している人は分かると思いますが、いくつかパターン化されていると思います。
例えば、サーチ。
探したい数字や文字をどうやって探すのか?という考え方です。
順次探索、2分探索、線形探索、ハッシュ探索など、さまざまあります。
次に、ソート。
バラバラになったデータをどうやって順序よく並べ替えるのか?という考え方です。
バブルソート、挿入ソート、マージソートなど、さまざまあります。
他にも様々なアルゴリズムがあります。
ですが、これらのアルゴリズムを勉強して果たして論理的思考が身につくのでしょうか?
答えは、半分Yesで、半分Noです。
なぜなら、上記に挙げたアルゴリズムを覚えてしまえば、形だけを覚えてしまうことになりがちです。これは、英語の文法や数学の公式などを覚える感覚に似ています。
最初は覚えるのに苦労すると思いますが、分かってしまえば、あとは機械的に分かるようになります。ですから、試験対策だけが目的のような勉強であれば、普通の受験勉強と同じになり、なんら論理的思考は身につきません。
しかし、上記に挙げたアルゴリズムを応用することができれば、飛躍的に論理的思考は身に付きます。
応用させるとは、個々のアルゴリズムをつなぎ合わせてひとつの処理を考えてみることです。
例えば、ソートとサーチを組み合わせて処理を行わせるということです。
テキストファイルにキー順にならんでいないバラバラなデータをランダムに書き込んでおき、探したい文字列を2分探索でファイルの中から探すアルゴリズムを考えてみるのもひとつの応用です。
実際に、ファイルのデータをソートするツールを作ることはよくあります。また、指定のデータがどこのファイルに格納されているかを登録しておくようなリスト構造を作ることもよくあります。
いずれにしても、論理的思考を身につけようと考えているならば、個々のアルゴリズムを理解した上で、それらを組み合わせる応用力が必要になります。
くれぐれも試験勉強のような、バブルソートの形、2分探索の形を覚えて、はい終わり、とはならないようにしてください。
その状態では、論理的思考は身につきませんので。
アルゴリズムクイックリファレンス 第2版 [ George T. Heineman ]
|
カテゴリ:プログラミング