web-dev-qa-db-ja.com

トップダウンおよびボトムアッププログラミング

Cなどの言語はトップダウンであるのに、なぜOOP JavaまたはC++はボトムアップのような言語ですか?開発?

34
buz

「トップダウン」アプローチでは、問題の高レベルの定義を取得し、それをサブ問題に細分します。その後、コーディングが簡単でわかりやすい断片になるまで再帰的に行います。これは多くの場合、プログラミングの「機能分解」スタイルに関連付けられていますが、そうである必要はありません。

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

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

66
Charlie Martin

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

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

オブジェクトを開発するにつれて、OOPは自然にボトムアップになりますが、手続き型プログラミングは、1つの関数から始めてゆっくりと追加するときにトップダウンになります。

19
Eclipse

分類が特定の言語に適用されることを聞いたことがなく、プログラミングのパラダイムです-最初に詳細を記入し(つまり、完全な実装メソッドを構築し)、次にそれらをまとめます(例えば、それらをmain()メソッドから呼び出します)、または論理フローから始めて、実装を具体化しますか?

どちらのタイプの言語でも実際にどちらでもできます...しかし、通常は反対で、現在のOOP言語では、最初にインターフェースを定義し、論理構造を形成し、その後、実装について心配しますが、Cのような単純な手続き型言語では、呼び出す前にいくつかのメソッドを実際に実装する必要があります。

4
AviD

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

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

「On LISP」では、Paul Grahamが「ボトムアップ」という用語をわずかに異なって使用して、共通機能を共有機能に継続的に抽出することを意味します。ドメイン。それはこの用語の一般的な使用法ではありません。最近では、それを「リファクタリング」および「ドメイン固有の埋め込み言語」と呼びます(そして、古いLISPプログラマーは、LISPが1950年代からそれを行えることを冷笑します)。

4
Nat

トップダウンアプローチでは、最初にサブシステムの詳細を指定せずに指定してシステムを定式化し、次に各システムとそのサブシステムをベースに指定するまで詳細に定義します。

例-Cプログラムでは、プログラムの先頭で関数を宣言する必要があり、その後、メインエントリを介してすべてのサブシステム/サブルーチンが詳細に定義されます。

ボトムアップアプローチの最初の設計では、基本レベルから抽象レベルまでが行われます。

たとえば、C++/Javaでは、プログラミング機能の基本レベルからクラスから設計を開始し、プログラムの主要部分に進みます。

2
varinder

このウィキペディアのページでは、かなりよく説明されています http://en.wikipedia.org/wiki/Top-down#Programming

2
Vini

構文よりもパラダイム(オブジェクト指向、命令型、関数型など)が重要です。

dept-info.labri.fr から

ボトムアッププログラミングは、トップダウンプログラミングの反対です。 アプリケーションがプログラミング言語の既存のプリミティブから始まり、徐々に複雑な機能を構築するプログラミングスタイルを指しますアプリケーションはすべて作成されています。

同じ記事の後半:

CやJavaなどの言語では、ボトムアッププログラミングは、言語のプリミティブまたは既存の抽象データ型から抽象データ型を構築する形式を取ります。

1
Rytek

プログラミングに対するトップダウンアプローチとボトムアップアプローチの違いは、トップダウンアプローチが問題を処理し、管理可能なステップに分割することと、ボトムアップアプローチが実際にそれらのステップを詳細化することだと思います。

1
Xcode

ほとんどの手続き型または低レベル言語は、C言語のようなトップダウンアプローチに従います。Java、c ++などのような高レベル言語は、ボトムアップアプローチに従います。

トップダウンアプローチでは、すべてのシステムまたは大きな機能が小さなサブシステムに分割されますが、ボトムアップアプローチでは、小さなサブシステムが組み合わされて大きな最終システムが開発されます。

例えば、再帰はトップダウンアプローチであり、反復はボトムアップアプローチです。

0
Vivek