プログラミングだけではだめ!アルゴリズムも学ぼう
プログラミングを学ぶということと、プログラミング言語を学ぶ、ということは違います。
ですが、この違いをよく理解しないまま学習を進めて、プログラミングを学ぶつもりが、いつのまにか言語の使い方に終始してしまう方が、非常に多いように感じます。
結果「あれ?思っていたよりもプログラムが書けない」「私には向いていない」と思って挫折してしまう方が多いのです。
これはとてももったいないと思うのです。そう感じるほとんどの方は、プログラミングを学んでないと思います。
Javaの構文、ルールを学んで終わり、ではないのです。
プログラミング言語が使えるようになって、さらにアルゴリズムという「解法」「どのようにプログラムを組んでいくか」という手法を学ばなければ、プログラミングをすることはできません。
プログラム言語の文法や使い方を学びながら、このアルゴリズムと並行して学ぶべきだと、わたしは考えています。
アルゴリズムとは何かイメージする
たとえば、100人の男女がいる中で、友人を探したいと考えてください。
その際に、あなたはどのように友人を探し当てますか?
一人ずつ確認して回る方法もあります。
友人が男性だった場合、100人を男女のグループに分けて探す方法もあります。
大声で名前を呼んで探す方法だってあると思います。
このように、同じ目的であっても、どうやって答えを導くか、その解き方、解法は人それぞれだと思います。
でも、どんな方法をとっても、結果的に友人は探せるはずです。
プログラミングも同じで、例えば「ある10個の数値を、小さい順に並び変えたい」となった場合、並び替えのアルゴリズムがいくつか存在します。
絶対それでないといけない、というものは基本的にはありません。
どんな方法を選択しても、そのプログラムが並び替える動作を行っているのであれば、ちゃんと並び替えることはできます。
でも効率、非効率、という問題はあります。
そのうえで、「絶対の答え」はないのですが「最適解」というのはあるわけです。
すでにその「最適解」のパターンは、先人たちが作り上げてくれています。
わたしたちはその「最適解」であるアルゴリズムを学び、自分が作成したいプログラムに応用するのです。
「10個の数値を、小さい順に並び替えたい」という、まったく同じシチュエーションはないかもしれません。まったく同じでなければ、学ぶ必要がないと感じるかもしれません。
ですが、その基本を知っておくと、さまざまな応用ができるようになります。 そしてその繰り返しによって、自分が思うようなプログラムを作成することができるのです。