2011-01-24 10 views
14

私はプログラミング以外の背景にあり、プログラミングパラダイム、デザインパターン、アプリケーションアーキテクチャなどの用語によく似ています。私はこれらの用語の意味をあいまいに理解していると思いますが、誰かがそれぞれ何であるか、それがどう違うのか、そしてこれらの概念がどのように目的Cに適用されるのかを明確にすることができれば幸いです。プログラミングパラダイム、デザインパターン、アプリケーションアーキテクチャの違いは?

答えて

14

プログラミングパラダイム:何か「Functional Programming」、「Procedural Programming」、「Object Oriented Programming」のようになります。プログラミングパラダイムとそれを使用する言語は、コードがどのように書き込まれるかを知らせます。例えば、オブジェクト指向プログラミングでは、コードはクラス(時には言語機能、時には(例えばjavascript)ではない)に分割され、通常は継承とある種の多型をサポートします。プログラマは、クラスを作成し、次に、クラスのインスタンス(すなわち、オブジェクト)を作成して、プログラムの動作を実行する。関数型言語では、コンピュータ上での状態の変化は言語自体によって大きく左右されます。関数はファーストクラスのオブジェクトですが、関数がファーストクラスのオブジェクトが関数型プログラミング言語であるすべての言語ではありません(このトピックは良い議論の1つです)。関数型言語で書かれたコードには多くのネストされた関数が含まれており、プログラムのほぼすべてのステップが新しい関数呼び出しです。手続き型プログラミングでは、Cプログラムとbashスクリプトはよい例です。ステップ1、ステップ2、などを実行します。を作成せずにクラスやその他のものを作成します。

デザインパターン:デザインパターンは、どの言語でも実装できる便利な抽象です。物事を行うための「パターン」です。実装したいステップがたくさんある場合は、 '複合'パターンと 'コマンド'パターンを使用して、実装をより一般的なものにすることができます。パターンは、一般的な方法で共通のコーディングタスクを解決するための確立されたテンプレートと考えてください。

アプリケーションアーキテクチャ:システムをどのように構築するかを考慮します。したがって、Webアプリケーションでは、非同期的にキューに供給されるロードバランサの背後にx個のゲートウェイが必要になることがあります。メッセージは、1台のプライマリdbとバックアップスレーブを持つzマシン上で実行されているyプロセスによって収集されます。アプリケーションアーキテクチャには、使用されるプラットフォーム、言語、フレームワークの選択が含まれます。これはソフトウェア・アーキテクチャーとは異なります。ソフトウェア・アーキテクチャーは、ソフトウェア・スタックが与えられた場合に実際にプログラムをどのように実装するかについてより詳しく述べています。

2

これらの用語(すなわち、フィールドコンピュータサイエンスの外にある)の一般的な解釈を考えてください。

  • パラダイムは、あなたが行うことができるものだけでなく、あなたが持つことができるどんな種類のものにも影響を与える計算のビューを包括しています。関数型プログラミングは、プログラミングパラダイムの一例です。
  • パターンは、いくつかの半正式な方法でコード化された、確立されたプログラミングの秘訣です。
  • アプリケーションアーキテクチャは、複雑なアプリケーションの編成方法を示す広範な用語です。

Objective-Cは、命令型言語Cに主にOOパラダイムの要素を追加します。パターンとアーキテクチャは、言語とほぼ直交しています。

2
  • プログラミングパラダイムは、コンピュータプログラミングの基本的なスタイルです。

  • ソフトウェアデザインパターン - 一般的なソフトウェア設計の問題に対するベストプラクティスソリューションです。一般的な問題には多くの設計パターンがあります。デザインパターンの詳細については、このリストからいくつかの本を読むことができます5 Best Books for Learning Design Patterns

  • アプリケーションアーキテクチャ - アプリケーションアーキテクチャは、複合アプリケーションを作成するために組織によって使用されている一連のアプリケーションをスケーラブルで信頼性の高いものにする科学技術です、利用可能で管理しやすい。

これらの用語は、すべてのプログラミング言語に当てはまると思います。デザインパターンはすべてのプログラミング言語で存在します。

これらは、抽象度の高いレベルを作成するために定義された論理用語です。

希望これは

5

いくつかの簡単な定義を助け、

アプリケーションアーキテクチャは、ソフトウェアの全体的なアーキテクチャについて説明します。例えば、ウェブベースのプログラムは、典型的には、ユーザインターフェース(HTML生成、ユーザからのコマンド処理)、ビジネスロジック(ソフトウェアの機能の実行方法のルール)、データベース永続データの場合)。対照的に、データ処理アプリケーションは、いわゆるパイプおよびフィルタアーキテクチャを使用することができ、データの一部は、異なるモジュールがデータに作用するパイプラインを通過する。

デザインパターンははるかに低いレベルのツールであり、全体的な構造を損なうことなく特定の機能を得るためにコードを整理する方法に関する実証済みのモデルを提供します。簡単な例には、シングルトン(コードの単一インスタンスの存在を保証する方法)またはFacade(より複雑なシステムに簡単な外観を提供する方法)が含まれます。

一方、パラダイムは、コードが実際にどのようにレイアウトされているかについての原則を導くもう1つの極端なものであり、適用するにはそれぞれ異なる考え方が必要です。例えば、手続き型プログラミングは、プログラムロジックを関数に分割し、それらの関数をモジュールに束ねることを主な目的としています。オブジェクト指向プログラミングは、データとデータを操作する操作をオブジェクトにカプセル化することを目的としています。関数型プログラミングは、副次的なステートメントの代わりに関数を使用することを強調し、副作用や状態の変化を回避します。

Objective-Cは、主にCのオブジェクト指向の拡張であり、デザインパターンやアーキテクチャは言語固有の構造ではありません。

0

シンプルな英語の単語 パラダイムは、プログラミングの際の考え方であり、ファーストクラスの概念を使ってソフトウェアを構成します。ファースト・クラスの市民としてのクラスの使用、関数またはラムダ計算の使用関数とその構成、アスペクトはシステムの側面を使用します。解決策を考えているとき、まずあなたの頭に浮かぶのは一流の市民です。目的は、ソリューションをソフトウェアコンポーネントに編成することです。

デザインパターンは、ソフトウェアコンポーネントのよく使用されるよく使用されます。

アプリケーションアーキテクチャは、ユースケースscdnariosを実現するために組み合わされた一連の設計パターンです。

関連する問題