ずばり、アルゴリズムを理解すれば、プログラミングのスキルが大きく向上します。
そこで今回は、アルゴリズムを学ぶ意味について書いてみます。
アルゴリズム(algorithm)とは、簡単に言うと、「ある問題や課題を解決するための処理手順」のことです。
プログラマーは、コンピューターを利用して、問題や課題を解決するプログラムを作る(コーディングする)のが仕事です。
良いプログラムを作るには、アルゴリズムについて理解する必要があります。
でも私がプログラミング初心者に教える場合は、
まず最初は、アルゴリズムなど難しいことを考えずに、プログラミングの基礎に集中するようにアドバイスします。
なぜなら、プログラミング初心者は、基礎を習得するだけで、精一杯だからです。
初心者が同時にアルゴリズムまで意識して考えると、プログラミングの習得が、必要以上に難しく感じるかも知れません。
だから最初は、正しく動くプログラムを作れるように専念するほうが、習得が早いと考えています。
もちろん、最初からアルゴリズムを考えて、プログラミングできれば一番良いが、なかなか難しいのが現実です。
頭の良い人なら可能かも知れませんが、普通は無理です。
プログラミングの基礎をある程度習得し、とりあえず正しく動くプログラムが作れるようになることが先です。
ある程度プログラミングに慣れてきて、中級以上になると、
・もっとスマートにコードを記述できないか
・もっと高速にできないか
・もっと効率よくできないか
などのことを考えるようになります。
そう思った時は、アルゴリズムについて学習する最適な時期に来ているかも。
この瞬間が、アルゴリズムを学ぶ絶好の機会(チャンス)です!
人は必要に迫られた時が、一番学習効果が高いですよね。
先日、とてもわかりやすい本を見つけたので、紹介します。
この本では、アルゴリズムを料理のレシピに例えて説明しています。
この本を読めば、データ型や配列といったプログラミングの基礎から、意味がよくわかります。
アルゴリズムは、囲碁の定石のようなものだとも言われています。
囲碁では、定石を知っている人のほうが強いように、
プログラミングもアルゴリズムを知っている人のほうが、良いプログラムを書ける可能性が高くなります。
先輩プログラマー達が、長年蓄積してきた、コンピューターで問題を解決するためのノウハウが、アルゴリズムにはたくさん詰まっています。
つまりアルゴリズムは、先人達の知恵の結晶です。
良いアルゴリズムで書くためには、
変数や配列、構造体などの基礎知識が必要です。
例えば、データを扱う時、どのように保持するかで、
参照、挿入、削除のスピードに影響することがあります。
また、データベースを使う場合には、データベース側でもデータを操作できますが、
データを取得した後に、クライアント側でデータを操作した場合のほうが、高速に動作することもあります。
効率的なプログラムを書くためには、このようなことも考える必要があります。
アルゴリズムは、プログラミングの基礎が出来ていないと、
効率的なプログラムを書くには、どうしたらいいのかわかりません。
だがらプログラミング初級はもちろん、中級以上のプログラマーが、もう一度基礎を見直すのにも有効です。
入門者向けの本で、アルゴリズムの基礎や概要を頭に入れてから、より本格的な本を読むと理解しやすいと思います。
そして実際に動いているプログラムで、しかも良いアルゴリズムのプログラムを参考にすることが、プログラミングの上達につながります。