トップダウンとボトムアップのプログラミング

「トップダウン」アプローチでは、問題の高レベルの定義を取り、それをサブ問題に細分化します。これを再帰的に実行して、明確でコード化が容易な部分に分解します。これは、プログラミングの「機能分解」スタイルに関連付けられることがよくありますが、そうである必要はありません。

「ボトムアップ」プログラミングでは、より大きなプログラムになるように構成できる下位レベルのツールを特定します。

実際には、ほとんどすべてのプログラミングはアプローチの組み合わせで行われます。オブジェクト指向プログラミングでは、通常、ドメイン オブジェクトを特定し (これはトップダウンのステップです)、それらを改良し、それらを最終的なプログラムに再結合することにより、問題を細分化します — ボトムアップのステップです.


トップダウン開発では、メイン機能から始めて、実行する必要がある主な手順を考え、それらの各手順をサブパーツに分割します。

ボトムアップ プログラミングでは、基本的な機能と必要な部分を考えて、それらを構築します。アクターとそのメソッドを開発し、それらを結び付けて一貫した全体を作ります。

オブジェクトを開発するとき、OOP は当然ボトムアップに向かう傾向がありますが、手続き型プログラミングは、1 つの関数から始めて徐々に追加するため、トップダウンに向かう傾向があります。


「トップダウン」や「ボトムアップ」という用語がそのように使われているのは聞いたことがありません。

これらの用語は通常、ソフトウェア システムの設計と実装にアプローチする方法を説明するために使用されるため、あらゆる言語またはプログラミング パラダイムに適用されます。

「LISP について」で、Paul Graham は「ボトムアップ」という用語を少し異なる方法で使用して、共通の機能を継続的に抽出して共有関数にすることを意味し、アプリケーションの観点からプログラミングできるようにする、LISP の新しいより高いレベルの方言を作成することになります。ドメイン。それはこの用語の一般的な使用法ではありません。最近では、私たちはそれを「リファクタリング」や「ドメイン固有の組み込み言語」と呼んでいます (古い LISP プログラマーは、LISP が 1950 年代からそれを行うことができたと冷笑するでしょう)。