12.1 コンパイルと分割統治

  1.背景
 プログラム規模の増大に伴い、そのソースファイルも長大になっていきます。一本の(1つのファイルの)長いプログラムでは、その全ての機能を満たすことは困難であり、かつその修正や改変への対応も容易でなくなるでしょう。1つのプログラムを複数人数によるチームで作成していく(プロジェクト)状況もよくあります。この場合にも、1つのファイルでそのプロジェクト全てに対応できないことは容易に予想できるでしょう。

 プログラムは、短い機能ごとに分割して積み上げていくことが必要不可欠です。チェックする範囲を「目の届く範囲(70行程度)」に限定し、プログラムの可読性を保つこと(分割統治)が必要です。

 (古典的な)C言語では、適切な問題のサイズの下で設計された関数と、それが扱うヘッダファイルでプログラムの分割を行います。

 バグの殆ど無い(枯れた)と思われる関数はコンパイルし、オブジェクトファイルにしていきます。オブジェクトファイル群を、開発中の残りの部分とリンクすることによって、1つのプログラムを生成します。目的に応じたファイル分割とコンパイル方法の工夫により、大きなプロジェクトに対する、様々の煩雑な作業を省くことが可能となります。また、プログラムをビルドする環境(CPU速度、メモリ容量等)が劣悪な場合、一度にコンパイル可能なサイズの小さな機能モジュール毎に分割することで、ビルド可能にする場合もあります。

 以上のように、機能ごとに別ファイルにしてそれぞれコンパイルし、ひとつのプロジェクトをビルドしていく方法を「分割コンパイル」といいます。