web-dev-qa-db-ja.com

オブジェクト指向プログラミングの代替手段?

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

  • 理論だけでなく、実際に使用されています。
  • oopと競合できるため、大規模なプロジェクトで、痛みなしで、または最小限の痛みで使用できます。
  • ビジネスロジック、データベースなどを備えたデスクトップアプリの開発に使用できます。
  • Oopのコンパニオンでは使用されませんが、oopを置き換えることができます。

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

72

関数型プログラミング は、主に学問で人気のある別のプログラミングパラダイムです。関数型プログラミング言語の最良の例は、 Haskell および Standard ML です。

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

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

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

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

44
Jonas

手続き処理は、OOPが登場するまではすべてでしたが、実際には大規模な現実世界のアプリケーション(実際には、それらのほとんどが元々)および多くのオペレーティングシステムを作成しました。

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

10
Woody

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

3
Disrup Tional

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

1