90

OOPは、おそらく今日のソフトウェア設計で最も使用されているプログラミングパラダイムです。私の質問は、他にどのようなパラダイムがそれと競合し、OOPの代わりに立つことができるかということです。その質問を明確にするために、私は他にどのようなパラダイムがあるかについて質問していません。たくさんありますが、どれか知りたいのですが…</ p>

  • 理論だけでなく、実際に使用されてきました。
  • OOPと競合できるため、最小限の労力で大規模なプロジェクトで使用できます。
  • ビジネスロジックやデータベースなどを備えたデスクトップアプリの開発に使用できます。
  • OOPと一緒に使用されるのではなく、OOPの代わりとして使用されます。

そして、もしあれば、それの長所/短所は何ですか、それがOOPよりも良い/悪い理由、それを使用するのに最適な言語は何ですか、人気のある言語でそれを使用するのはどうですか、それはどんなデザインパターンを持っていますか、そしてそれはできますかOOPを完全に置き換えますか?

4

6 に答える 6

55

関数型プログラミングは、主に学者に人気のあるもう1つのプログラミングパラダイムです。関数型プログラミング言語の最良の例は、HaskellStandardMLです。

関数型プログラミングとオブジェクト指向プログラミングの基本的な違いは、制御フローではなくデータフローの意味でプログラミングしていることです。良い紹介については、SimonPeyton-Jonesによる関数型プログラミングによる効果の調整のプレゼンテーションを参照してください。

業界で使用されている関数型プログラミングの良い例はErlangです。これは主に、通信、分散、およびフォールトトレラントシステムで使用されます。プレゼンテーションErlang-JoeArmstrongによる同時世界のソフトウェアを参照してください。

関数型プログラミングとOOPを組み合わせた新しい関数型プログラミング言語もあります。2つの良い例は、.NETプラットフォーム用のF#とJavaプラットフォーム用のScalaです。多くの場合、他の言語で記述されたプラットフォーム上の既存のライブラリを使用できます。

現在、新しいプログラミング言語のトレンドはマルチパラダイムであり、オブジェクト指向プログラミングや関数型プログラミングなどの複数のパラダイムが同じ言語で組み合わされています。

于 2010-08-12T12:44:41.437 に答える
13

手続き型処理は、OOPが登場する前のすべてであり、いくつかの大規模な実世界のアプリケーション(実際、それらのほとんどは元々)と多くのオペレーティングシステムを生み出してきました。

最小限の痛みと最大限のパフォーマンスで大規模な製品に確実に使用できます

于 2010-08-12T12:59:58.870 に答える
8

まず、現在使用されているプログラミング言語の多く(特に「高級言語」)はマルチパラダイムであることに注意してください。つまり、純粋にOOPであるプログラムを構築することは決してないということです(SmalltalkまたはEiffelを使用して大きなプロジェクトを構築する場合を除く)。

たとえば、 PHPを見てください。

  • OOPの多くの要素があります(バージョン5以降)
  • 以前はほとんど手続き型でした
  • 宣言型プログラミングの要素(配列関数など)があります
  • 関数型プログラミングの多くの要素を実装しました(バージョン5.4以降)

基本的に、PHPは多くの異なるパラダイムを一緒に接着しています(そしてそれ自体が「グルー言語」です)。

また、Javaは、オブジェクト指向パラダイム(関数型プログラミングなど)からではない多くの概念を実装しています。

ウィキペディアのタイプ別プログラミング言語のリストをご覧ください:https://en.wikipedia.org/wiki/List_of_programming_languages_by_type#Imperative_languages(100%正確ではありません)。

関数型プログラミング(declerativeプログラミングのサブセット)

  • Wideleyは実際に使用されています(PHPのような接着言語の一部になり、 Javaや他の多くの言語も関数型プログラミングの概念を実装しています)
  • 多くのアイデアは間違いなく一見の価値があるLISPに由来します
  • たとえばHaskellを使用してアプリケーション全体を構築できるため、OOPを「置き換える」ことができます

手続き型プログラミング

  • C(主に手続き型言語として)は今でも最も広く使用されている言語の1つです
  • 多くの現代の接着剤言語は最初は手続き型でした
  • それでも多くのプログラムはほとんど手続き型です(したがって、必要に応じてOOPを「置き換える」ことができます)

論理プログラミング

  • 最も顕著な例はPrologです。これは、ルールベースの論理クエリの恩恵を受ける特定のタスクに使用されます
  • 大規模なプロジェクトの構築に関してOOPを「置き換える」ことはできませんが、他の用語で置き換える可能性があります

一般的な宣言型/ドメイン固有言語

  • プロジェクトでSQLを使用していますか?その場合、それらは純粋にOOPではなく、SQLは本質的に宣言型です。
  • 多くのドメイン固有言語(CSSなど)は宣言型です

一般的な命令型プログラミング

このリストは完全ではありません。それはただアイデアを与えるだけです。大きなアプリケーションを作成するときは通常、さまざまなパラダイムを使用しており、使用している各言語でさえ複数のパラダイムを実装していることに注意してください。

OOPは通常、データをモデル化するときに大規模で複雑な関係を構築するための適切な選択と見なされます。他の多くのタスクに対応することが常にパラダイムであるとは限りません。

于 2020-05-29T14:07:50.200 に答える
4

ベクターリレーショナルデータモデリングは、ネットワーク常駐モデルブローカーであるグローバル情報ネットワークアーキテクチャ内で、ドメイン関連のセマンティクスを備えた実行可能情報モデルを作成するために使用されます。

于 2015-09-04T20:42:58.467 に答える
1

FP-関数型プログラミングは非常に人気のあるプログラミングパラダイムであり、非常に長い間存在しており、近年、ますます顕著になり始めています。FPは、可変性、再帰、および副作用のない機能よりも不変性を優先します。人気のあるfp言語の例としては、Erlang、Scala、F#、Haskell、Lispなどがあります。

于 2010-08-12T12:49:40.407 に答える
-5

現在、OOPを真に置き換えることができるパラダイムはありません。OOP(の利点)の問題は、リソースの自動解放、データの検証など、膨大な量の作業を実行し、コードの検証を容易にすることです。もちろん、世界の既存のライブラリの大部分はC ++、C#、JavaなどのOOP言語で記述されています。このような大規模な図書館などがなくてもうまくやっていくという現実は非常に疑わしい。

ニッチな世界や学術的な世界では、関数型プログラミングがたくさんあります。ただし、本当に大規模なプロジェクトを実行したい場合は、OOPが唯一の方法です。

ジェネリックプログラミングは新しいパラダイムとして登場すると思います。ただし、実際にはまだ開発段階にあり、C ++/Dだけが真に優れたジェネリックプログラミングを提供します。

于 2010-08-12T13:01:09.650 に答える