まず、現在使用されているプログラミング言語の多く(特に「高級言語」)はマルチパラダイムであることに注意してください。つまり、純粋にOOPであるプログラムを構築することは決してありません(SmalltalkまたはEiffelを使用して大きなプロジェクトを構築する場合を除く)。
たとえば、PHPを見てください。
- OOPの多くの要素があります(バージョン5以降)
- 以前はほとんど手続き型でした
- 宣言型プログラミングの要素(配列関数など)があります
- 関数型プログラミングの多くの要素を実装しました(バージョン5.4以降)
基本的に、PHPは多くの異なるパラダイムを結び付けています(そしてそれ自体が「グルー言語」です)。
また、Javaは、オブジェクト指向パラダイム(関数型プログラミングなど)からではない多くの概念を実装しています。
ウィキペディアでタイプ別のプログラミング言語のリストを確認してください:https://en.wikipedia.org/wiki/List_of_programming_languages_by_type#Imperative_languages(100%正確ではありません)。
関数型プログラミング(宣言型プログラミングのサブセット)
- Wideleyは実際に使用されています(PHP、Javaなどの接着言語の一部になり、関数型プログラミングの概念を実装しています)
- 多くのアイデアは間違いなく一見の価値があるLISPに由来します
- たとえばHaskellを使用してアプリケーション全体を構築できるため、OOPを「置き換える」ことができます
手続き型プログラミング
- C(主に手続き型言語として)は今でも最も広く使用されている言語の1つです
- 多くの現代の接着剤言語は最初は手続き型でした
- それでも多くのプログラムはほとんど手続き型です(したがって、必要に応じてOOPを「置き換える」ことができます)
論理プログラミング
- 最も顕著な例はPrologです。これは、ルールベースの論理クエリの恩恵を受ける特定のタスクに使用されます
- 大規模なプロジェクトの構築に関してOOPを「置き換える」ことはできませんが、他の用語で置き換えることはできます
一般的な宣言型/ドメイン固有言語
- プロジェクトでSQLを使用していますか?その場合、それらは純粋にOOPではなく、SQLは本質的に宣言型です。
- 多くのドメイン固有言語(CSSなど)は宣言型です
一般的な命令型プログラミング
このリストは完全ではありません、それはただ考えを与えるでしょう。大きなアプリケーションを作成するときは通常、さまざまなパラダイムを使用しており、使用している各言語でさえ複数のパラダイムを実装していることに注意してください。
OOPは通常、データをモデル化するときに大規模で複雑な関係を構築するための適切な選択と見なされます。他の多くのタスクに対応することが常にパラダイムであるとは限りません。