第13回 考える楽しさ、習う楽しさ「7.考えること、習うこと、学ぶこと」

13−7 考えること、習うこと、学ぶこと

今回お送りしたお話は「迷路を作り上げる」という目的に対して、いろいろ試行錯誤をしつつ、1つの完成にたどり着きました。
サンプル的に作ったものは、関数も一般的なものを使い、APIなどの特定のOSやハードウェアに依存する部分はありませんので、大抵のBASICなら多少の変更で動作するでしょう。
また、考え方やフローチャートを元に、別の言語で作っても、多分、動作することと思います。
ちなみに、実際、今回作ったプログラムは、VB6で作成して、NS Basicにコピー&ペーストして微修正したものです。また、簡単にエクセルのアドインにも移行できました。

ところで、今回の講座は、面白かったでしょうか?
プログラミング講座、と言うと、言語の仕様を理解したり覚えたり、また、APIを通してOSを理解したりと、即実的な面、言いかえれば操作的な面を想像される方が少なくありません。
最近の開発言語は覚えることが多い、といえば、それまでですが、しかし、それだけを習得しても優秀なプログラマになれるとは限りません。少なくとも、WindowsのAPIを熟知しているからといっても、そのままMac上で組めるか、と言えば疑問は残るでしょう。
最悪な事に、Windows上のプログラミングは、MFCというライブラリに依存する部分がありますので、プログラマと言いつつも、実は、そのライブラリを駆使しているだけの場合があります。
まぁ、競争力の激しい世界で、悠長に1からコードを書いていたのではやっていられませんので、一概に良し悪しを決め付けるのもいけませんが、それにしても、最近、プログラマの質が低下している、という話を耳にする機会が多いのは偶然でしょうか?

プログラミングを身に付けると言うこと、それは、その言語に精通することではなく「アルゴリズムが組み立てられること」だと思っています。
それは、人が見てもわかりやすく、コンピュータ的にも「効率の良い」方法や手順で組み上げる必要があるので、かなり高度なお話ですが、そこに面白さを感じて、夜毎にガリガリとプログラムを作っている「趣味の」プログラマさんが多く存在するのも、わかる気がします。
しかし、何もないところからそういうコンピュータ的なアルゴリズムを組み上げるようになるのは、至難の業ですし、我流の非効率な方法に陥る可能性もあります。

では、効率の良いアルゴリズムを組み立てることは、どうやって身につければよいのでしょうか?
人のコードを読む、とか、たくさんプログラムをセンスを磨く、とか色々な説があります。それも一考ですが、まずは、先人たちが残した「アルゴリズムの基本」を勉強されるのが一番効果的ではないかと、思います。
もちろん、ある程度、プログラム言語を触って、その言語で大抵のことが一応書けるようになってからでも遅くはありません。

面白いことに、アルゴリズムの本質を追求すると、特定の言語に束縛されなくなるため、中には仮想的な言語を用いて解説しているものすらあります。
でも、そこまで行かなくても、NS Basicのユーザーなら、「BASIC」を使った解説書で十分でしょう。
こういったアルゴリズムの本には、先人たちの知恵が結集されています。そして、時代が流れて言語仕様が変わっても、大抵の場合、アルゴリズムは通用します。
もちろん、特定の言語に依存するアルゴリズムもありますが、そういうものはむしろ少数で、コンピュータの動作原理が根本から変わらない限り、アルゴリズムは普遍でありえるでしょう。

今回は迷路作成の考え方、つまり、そのアルゴリズムによって、迷路の完成度が大きく変わってしまうことを実験してきました。
また、それらの欠点を絞り込んで改良することを順に試してきました。
単に、新しいものに作り変えるには、色々考えることが必要ですが、最終的な部分、ランダム数列の作成アルゴリズムを知っているか知らないかで、大きく結果が変わることもわかりました。
このような部分は、先人の知恵を学ぶことで得られるわけで、自分では、なかなか思いつかないアルゴリズムです。

それにしても、迷路が出来る様子を眺めているのは、面白いものです。
アルゴリズムを組替えることで、どんどん賢くなっていく迷路作成ルーチン。最初のモノに比べれば、感動的ですらあるでしょう。
この「面白さ」こそ、考えること、習うこと、学ぶことの原動力じゃないかと思います。
そんなわけで、お送りした第13回 Basic BASIC、如何だったでしょうか?
皆様の、ご意見、ご感想などいただければ、幸いです。

前へ     目次へ

第13回 考える楽しさ、習う楽しさ「7.考えること、習うこと、学ぶこと」