プログラミングの体系化
- いかにプログラミングを体系的な行為にできるか、もしそれができれば、プログラムにプログラミングさせることが可能になります。
- というゴール設定。
作り方の体系化
作りたいものに必要なデータを洗い出す
- 入力データ、出力データ、内部データを洗い出します。
- これは、データベースに置ける「概念データモデル」、「論理データモデル」、「物理データモデル」の関係に似ています。
- つまり、プログラムに必要なデータとは何かを考える事、そのデータの論理的な構造を考える事、それを実際の構造体やらに落とし込むことです。
作りたいものの仕組みを想像する
- ものの動きや、考え方をトレースします。
- どう考えれば、答えを導けるか、どう考えていけば、答えに近づけるかの筋道を作ります。
- これはいわゆる、アルゴリズムというやつです。
- このアルゴリズムを考え出す力の一つが、数学です。
作る前に書き下す
- おおよその武器は、上記2つで出来上がります。
- しかし、それらで全てが揃っていることは、まずないでしょう。
- 何か考えていなかった条件があったり、考え忘れていたことがきっとあるはずです。
- そのため、次の流れにそってプログラムを書く前の準備をします。
- プログラムがどういう使われ方をするのかを考えて、コメントで、おおまかな処理の流れを書く。
- その流れにそって、必要な要素を抜き出し、モジュールに分ける。
- 各モジュールの説明を書く。
- 各モジュールが他のモジュールに大きく依存していないか、検証する。依存性が高いと、メンテナンスコストが高くなる。
- 各モジュールで必要な処理をコメントに書く。
- 各モジュールで書いたコメントに対して、関数のひな形などを作っていく。
- ひな形に対して、入力、出力が存在するはず。
- ここで、ひな形を呼び出すプログラムの流れが間違えていないかチェックする。
- ここでコーディング開始。
コーディング
- ここまできて、ようやくコーディング開始。
- 基本的にはトップダウンに書き下す。
- トップダウンで書き下したコードは、必ず、それを流用出来るかどうか、他で同じ事をやっていないかを考えながら書く。
- 本当にその処理がそのモジュールで定義すべきものなのかを、再三再四チェックする。
- 書くたびに、外部仕様にあっているかチェックする。