まず、現在使用されているプログラミング言語の多く(特に「高級言語」)はマルチパラダイムであることに注意してください。つまり、純粋に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は通常、データをモデル化するときに大規模で複雑な関係を構築するための適切な選択と見なされます。他の多くのタスクに対応することが常にパラダイムであるとは限りません。