Проводились ли исследования эффективности ООП в управлении сложностью программного обеспечения? [закрыто]

14

ООП часто рассматривается как эффективная стратегия управления сложностью в программном обеспечении, в отличие от процедурного программирования без ООП.

Были ли какие-либо исследования, проверяющие это понятие? Доказано ли, что ООП часто помогает управлять сложностью в больших проектах?

Авив Кон
источник
4
Несмотря на очень интересное, ИМХО, измерение «сложности» и «эффективности» парадигм является трудным и предвзятым делом. Каждая программа уникальна, каждый разработчик уникален, и ее трудно сравнивать. Более того, производительность зависит не только от парадигмы, но от инструментов, экосистемы, учебных материалов. Беспристрастное исследование должно позволить целым студенческим группам программировать одинаковые требования для любого языка и видеть результаты. Тем не менее, даже они, вероятно, имеют предварительные знания, которые делают его предвзятым. Я не знаю таких исследований.
15.15
Не учеба, а какая-то академическая напыщенная речь: en.wikipedia.org/wiki/Object-oriented_programming#Criticism
Den
1
Это немного хитрый вопрос, потому что ООП, как это практикуется в отрасли, имеет тенденцию быть крайне необходимым. Итак, мы перешли от процедур, затрагивающих глобальные переменные, к методам, которые изменяют объекты, которые изменяют другие объекты, которые изменяют другие объекты; побочные эффекты несколько более явные, но на расстоянии все еще много действий. С другой стороны, когда вы минимизируете побочные эффекты и делаете вещи неизменными, некоторые утверждают, что вы занимаетесь функциональным программированием.
Довал
2
Нет способа действительно измерить его - это квантовый эффект, когда измерение влияет на результат.
DeadMG
1
Для сравнения необходимо иметь альтернативную парадигму, которая применима к очень большим системам программирования, построенным программистами с обычными навыками (т.е. не командой экспертов или современными учеными). Большие системы, как правило, включают сети, базы данных, балансировку нагрузки и избыточность (то есть ненадежные машины). Последний список проблем доминирует над любыми дебатами по поводу парадигм языка программирования.
Rwong

Ответы:

10

Я не знаю ни одного исследования с количественными измерениями. Как уже упоминалось в комментариях к вашему вопросу, добиться этого практически невозможно. Однако есть несколько философских работ, которые пытаются ответить на это.

Моя любимая статья на эту тему - «Бен из Мозли и Питер Маркс» . Это объясняется различными утверждениями из авторитетных источников о сложном проектировании системы и довольно интересными результатами.

Из Tar Pit приходит к выводу, что функциональное программирование на самом деле является лучшей парадигмой для поддержки решений, которые они предлагают. Это имеет смысл, потому что, по моему опыту, сложные системы ООП со временем становятся очень близкими к процедурным и процедурные начинают выглядеть как ООП (у них нет синтаксиса и других атрибутов, но поток выполнения может стать очень похожим). Реальная разница заключается в другой парадигме или в сочетании с ООП. На данный момент такой парадигмой является функциональное программирование, которое, наконец, становится доступным в обычных бизнес-приложениях обычными программистами (все еще находящимися там).

frzng
источник
5

Да, были некоторые исследования. Вот один из них: http://www.csm.ornl.gov/~v8q/Homepage/Papers%20Old/spetep-%20printable.pdf

По сути, он приходит к выводу, что между измерением производительности процедурного кода и производительностью языка OO нет ощутимой разницы ... но правда в том, что эти типы вопросов настолько контекстно-зависимы, что ни одно исследование не скажет вам, что вы должны делать в данной ситуации. ,

Calphool
источник
Долгое время проводились исследования, которые показали, что внедрение настольных компьютеров в офисную среду не привело к повышению производительности.
@nocomprende, есть ли у вас основания полагать, что эти исследования сделали неверный вывод? ПК 1989 года, который использовался обычным офисным работником в 1989 году, полностью отличается от современного компьютера, используемого современным работником. Точно так же применение объектной технологии может улучшаться или не улучшаться со временем.
Йорген Фог
1
@ JørgenFogh Думаю, я согласен с утверждением, что исследования не всегда показывают то, что кажется здравым смыслом. Предприятия не стали бы использовать компьютеры в офисах, если бы им стало хуже. Люди не потратили бы десятилетия на разработку ОО-подхода, если бы он не помог. Будут ли они? Ну, люди могут ошибаться, но как вы можете убедительно доказать это, так или иначе? То, к чему это сводится, является: "Это работает для Вас ?"