アルゴリズムからプログラムを学ぼう!
PHPのための基礎-ソフトウェア工学としてのPHPプログラミング
PHPの基礎ではなく、PHP「のため」の基礎としたのには理由があります。連載「PHP開発プロジェクトの夢と現実(http://www.thinkit.co.jp/free/article/0705/5/1/)」で、PHPは習得しやすいプログラミング言語であることを書きました。また、そのことによる弊害も述べました。
今回の連載では「言語としての」PHPについてはある程度わかっているのだけれど、いまひとつプログラミングに自信が持てないという、初級または中級の方々を主な対象として、プログラミングの基礎を解説します。本連載は、「ソート」に焦点をあててその考え方を具体的に説明していきましょう。
改めてソートとは
ソート(sort)とは、ものをある規則に合うように並び替えることです。ここではソートアルゴリズムを考えて、ソートを行う関数を作ってみます。
こういうと、こんな声が聞こえてきそうです。「PHPにはすでに『sort()関数』があるのだから、何もわざわざ自分でソート関数を作る必要はないだろう」と。
そのとおりです。実際にアプリケーション開発の現場でソート関数を作っていたら、よけいな工数をかけるだけだと、上司から怒られるでしょう。
しかし、どのようなメカニズムでsort()関数が動作するか、その仕組みや原理、さらにいえば理論を知ることは、ソフトウェア技術者として「必要」なことです。ソートは一見単純ですが、奥深いものを持っています。
実際のプロジェクトが始まってしまえば、そのような原理や理論を学んでいる暇はありません。戦いが始まる前に腕力を鍛えておく必要があります。これらのアルゴリズムを学ぶことは、つまりは腕力を鍛えることです。そして、腕力を鍛えるには、先人たちの知恵に学び、また、すでにあるものでもそれを自分で(=独力で)作ってみることが一番です。ですので、今さらながらですが、ソートのプログラムを作ってみたいと思います。