アルゴリズムも大切ですが、抽象化のトレーニングも
プログラミングを習う場合に、必ずと言ってよいほど出てくるのが
アルゴリズムです。ソート(並べ替え)とか、素数の判定、などです。
毎度、管理人イガジーです。
確かに、アルゴリズム、解法の手順は大切です。
でも、実際に(数学的な)アルゴリズムを考えなきゃならない
ような事態はマレです。(ジャンルにも依るでしょうが)
心配なのは、アルゴリズムを考えるのに疲れたり、
クイックソートの中身が理解できずに自己嫌悪に陥ったりしては
本末転倒ではないかと思うのです。
せっかくプログラミングを学ぼうとしてるのに、
アルゴリズムの壁に押しつぶされては可哀想です。
プログラミングは楽しいものなのですから。
言ってしまえば、現在では、重要なアルゴリズムのものは
ライブラリとして提供されています。だからそれを使えば良い。
プログラミングで養うべき力は、アルゴリズムを考えるよりも
処理(手続き)を抽象化することだと思います。
「抽象化」というのは、数式化であり、変数や配列による記述です。
わかりやすく言うと、いかにループ化するか、を考えるのが
プログラミングで大切なトレーニングになるのです。
例えば、カラーバーを表示させるプログラムを考えてみます。
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]);
}
と、書けるようになる事が大切です。
配列を使えば、ループ処理にできます。そのためには、
赤を背景にセットする→配列に格納されている色をセットする
と、具体的な値(赤)を、「配列に格納されている色」に抽象化
しなければなりません。
この抽象化のトレーニングこそが、プログラミングで大切です。
そして、その力は、繰り返し何か(小さなプログラム)を作ることで
養うことができるのです。
プログラミングを楽しみましょう。
この記事へのコメントはこちら