アルゴリズムも大切ですが、抽象化のトレーニングも

   2012/06/13

プログラミングを習う場合に、必ずと言ってよいほど出てくるのが
アルゴリズムです。ソート(並べ替え)とか、素数の判定、などです。

毎度、管理人イガジーです。

確かに、アルゴリズム、解法の手順は大切です。
でも、実際に(数学的な)アルゴリズムを考えなきゃならない
ような事態はマレです。(ジャンルにも依るでしょうが)

心配なのは、アルゴリズムを考えるのに疲れたり、
クイックソートの中身が理解できずに自己嫌悪に陥ったりしては
本末転倒ではないかと思うのです。

せっかくプログラミングを学ぼうとしてるのに、
アルゴリズムの壁に押しつぶされては可哀想です。
プログラミングは楽しいものなのですから。

言ってしまえば、現在では、重要なアルゴリズムのものは
ライブラリとして提供されています。だからそれを使えば良い。

プログラミングで養うべき力は、アルゴリズムを考えるよりも
処理(手続き)を抽象化することだと思います。

「抽象化」というのは、数式化であり、変数や配列による記述です。
わかりやすく言うと、いかにループ化するか、を考えるのが
プログラミングで大切なトレーニングになるのです。

例えば、カラーバーを表示させるプログラムを考えてみます。

Label red=new Label();
red.setBackground(Color.RED);
Label blue=new Label();
blue.setBackground(Color.BLUE);
....

というようなコードをずらずらと書いても、目的は達せられます。

でも、これをどうやればループ(繰り返し)になるかを考えて

Color [] col={
    Color.RED,
    Color.BLUE,
    Color.YELLOW,
    ...
};
Label [] lbl=new Label [col.length];
for (int i=0;i<col.length;++i) {
    lbl[i]=new Label();
    lbl[i].setBackground(col[i]);
}

と、書けるようになる事が大切です。

配列を使えば、ループ処理にできます。そのためには、
赤を背景にセットする→配列に格納されている色をセットする
と、具体的な値(赤)を、「配列に格納されている色」に抽象化
しなければなりません。

この抽象化のトレーニングこそが、プログラミングで大切です。
そして、その力は、繰り返し何か(小さなプログラム)を作ることで
養うことができるのです。
プログラミングを楽しみましょう。

この記事へのコメントはこちら

メールアドレスは公開されませんのでご安心ください。
また、* が付いている欄は必須項目となりますので、必ずご記入をお願いします。

内容に問題なければ、下記の「コメント送信」ボタンを押してください。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)