アルゴリズムからプログラムを学ぼう!

2008年5月2日(金)
須藤 克彦

PHPのための基礎-ソフトウェア工学としてのPHPプログラミング

 PHPの基礎ではなく、PHP「のため」の基礎としたのには理由があります。連載「PHP開発プロジェクトの夢と現実(http://www.thinkit.co.jp/free/article/0705/5/1/)」で、PHPは習得しやすいプログラミング言語であることを書きました。また、そのことによる弊害も述べました。

 今回の連載では「言語としての」PHPについてはある程度わかっているのだけれど、いまひとつプログラミングに自信が持てないという、初級または中級の方々を主な対象として、プログラミングの基礎を解説します。本連載は、「ソート」に焦点をあててその考え方を具体的に説明していきましょう。

改めてソートとは

 ソート(sort)とは、ものをある規則に合うように並び替えることです。ここではソートアルゴリズムを考えて、ソートを行う関数を作ってみます。

 こういうと、こんな声が聞こえてきそうです。「PHPにはすでに『sort()関数』があるのだから、何もわざわざ自分でソート関数を作る必要はないだろう」と。

 そのとおりです。実際にアプリケーション開発の現場でソート関数を作っていたら、よけいな工数をかけるだけだと、上司から怒られるでしょう。

 しかし、どのようなメカニズムでsort()関数が動作するか、その仕組みや原理、さらにいえば理論を知ることは、ソフトウェア技術者として「必要」なことです。ソートは一見単純ですが、奥深いものを持っています。

 実際のプロジェクトが始まってしまえば、そのような原理や理論を学んでいる暇はありません。戦いが始まる前に腕力を鍛えておく必要があります。これらのアルゴリズムを学ぶことは、つまりは腕力を鍛えることです。そして、腕力を鍛えるには、先人たちの知恵に学び、また、すでにあるものでもそれを自分で(=独力で)作ってみることが一番です。ですので、今さらながらですが、ソートのプログラムを作ってみたいと思います。

神戸情報大学院大学
1980年立命館大学理工学部卒、独立系ソフトハウスに入社。CやFORTRANコンパイラなどの言語処理系の設計・開発に約10年間従事。その後ユーザ系企業でUNIXによるクライアントサーバシステムの設計・開発を主導。同時に企業の内外で人材育成に注力する。現在は神戸情報大学院大学で講師として教鞭(きょうべん)をとる。「ソフトウエア工学の基礎を勉強してオールラウンドプレーヤーを目指せ」が技術者育成についての口癖。http://www.kic.ac.jp/professors/sudo/index.html

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています