ソフトウェアの複雑さの管理におけるOOPの有効性に関する研究はありますか?[閉まっている]


14

OOPは、非OOP手続き型プログラミングとは対照的に、ソフトウェアの複雑さを管理する効果的な戦略と見なされることがよくあります。

この概念をテストする研究はありますか?OOPが大規模なプロジェクトの複雑さを管理するのに役立つことがしばしば証明されていますか?


4
非常に興味深いにもかかわらず、私見では、パラダイムの「複雑さ」と「有効性」を測定することは困難で偏りがちな試みです。すべてのプログラムは一意であり、すべての開発者は一意であり、比較するのは困難です。さらに、生産性はパラダイムではなく、ツール、エコシステム、学習教材に依存しています。公平な研究では、学生グループ全体がどちらの言語でも同じ要件をプログラムし、結果を確認する必要があります。しかし、彼らでさえも事前の知識を持っている可能性が高く、それを偏らせています。私はそのような研究を知りません。
dagnelies

ない研究が、いくつかの学術暴言:en.wikipedia.org/wiki/Object-oriented_programming#Criticism
デン

1
業界で実践されているOOPは非常に重要な傾向があるため、これはちょっとしたトリックの質問です。したがって、グローバルに関係するプロシージャから、他のオブジェクトを変更するオブジェクトを変更するメソッドに移動しました。副作用はいくぶん明確になりますが、進行中のアクションはまだたくさんあります。一方、副作用を最小限にして不変にする場合、関数型プログラミングをしていると主張する人もいます。
ドーバル14

2
それを真に測定する方法はありません。それは、測定が結果に影響を与える量子効果です。
DeadMG 14

1
比較するには、通常のスキルを持つプログラマーによって構築された非常に大規模なプログラミングシステムに適用できる代替パラダイムが必要です(つまり、専門家チームや最先端の​​学者によってではありません)。大規模なシステムでは、ネットワーク、データベース、負荷分散、冗長性(信頼性の低いマシンなど)が関係する傾向があります。後者の問題のリストは、プログラミング言語のパラダイムに関する議論を支配しています。
rwong 14

回答:


10

私は、定量化可能な測定値に関する研究を知りません。他の人があなたの質問へのコメントで言及したように、それを達成することは実際上不可能です。しかし、それに答えようとする幾分哲学的な論文があります。

そのトピックに関する私のお気に入りの論文は、Ben MoseleyとPeter MarksによるOut of the Tar Pitです。複雑なシステム設計についての立派な情報源から非常に興味深い結果まで、さまざまな記述があります。

Tar Pitから、関数プログラミングは実際に彼らが提案しているソリューションをサポートするための最良のパラダイムであると結論付けています。私の経験では、複雑なOOPシステムは時間の経過とともに手続き型に非常に近くなり、手続き型はOOPのように見え始めます(構文やその他の属性はありませんが、実行フローはかなり似ているかもしれません)。本当の違いは、異なるパラダイムによって、またはそれをOOPと組み合わせることによってもたらされます。現時点では、このようなパラダイムは関数型プログラミングであり、一般的なプログラマーが最終的に一般的なビジネスアプリケーションで使用できるようになっています(まだそこに到達しています)。


5

ええ、いくつかの研究がありました。1つです:http : //www.csm.ornl.gov/~v8q/Homepage/Papers%20Old/spetep-%20printable.pdf

基本的に、手続き型コードの生産性とオブジェクト指向言語の生産性の間に測定可能な違いはないと結論付けられます。 。


長い間、オフィス環境にデスクトップコンピューターを導入しても生産性が向上しないことを示す研究がありました。

@nocomprendeこれらの研究が間違った結論を下したと信じる理由はありますか?1989年に平均的なオフィスワーカーが使用する1989年のPCは、現代のワーカーが使用する最新のマシンとはまったく異なります。同様に、オブジェクトテクノロジーのアプリケーションは、時間とともに改善される場合と改善されない場合があります。
ヨルゲンフォグ

1
@JørgenFogh私は、研究が常識と思われるものを常に示すとは限らないという声明に同意したと思います。事態が悪化した場合、企業はオフィスでコンピューターの使用を開始しなかったでしょう。OOアプローチが役に立たなければ、人々は何十年もオブジェクト指向アプローチの開発に費やさなかったでしょう。彼らでしょうか?まあ、人々は間違っている可能性がありますが、どうやってそれを最終的にどのように証明しますか?結局のところ、「これはあなたのために機能しますか?」
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.