Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
+++++++ООП_КН. doc.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
94.72 Кб
Скачать

Критика ооп

Не дивлячись на окремі критичні зауваження на аресу ООП, в даний час саме ця парадигма використовується в переважній більшості промислових проектів. Проте, не можна вважати, що ООП є якнайкращою з методик програмування у всіх випадках.

Критичні вислови на аресу ООП:

  • Дослідження Thomas E. Potok, Mladen Vouk і Andy Rindos [1] показало відсутність значущої різниці в продуктивності розробки програмного забезпечення між ООП і процедурним підходом.

  • Крістофер Дейт указує на неможливість порівняння ООП і інших технологій багато в чому через відсутність строгого і загальновизнаного визначення ООП (C. J. Date, Introduction to Database Systems, 6th-ed., Page 650)

  • Олександр Степанов, в одному зі своїх інтерв'ю, указував на те, що ООП «методологічно неправильно» і що «. ООП практично така ж містифікація як і штучний інтелект.» ([2]).

  • Фредерік Брукс (Frederick P. Brooks, Jr.) в своїй статті «No Silver Bullet. Essence and Accidents of Software Engineering» (Computer Magazine; April 1987) указує на те, що найбільш складною частиною створення програмного забезпечення є « . специфікація, дизайн і тестування концептуальних конструкцій, а зовсім не робота по виразу цих концептуальних конструкцій.». ООП (разом з такими технологіями як штучний інтелект, верифікація програм, автоматичне програмування, графічне програмування, експертні системи і ін.), на його думку, не є «срібною кулею», яка могла б на порядок величини (тобто приблизно в 10 разів, як мовиться в статті) понизити складність розробки програмних систем. Згідно Бруксу «.ООП дозволяє скоротити тільки привнесену складність у вираз дизайну. Дизайн залишається складним за своєю природою.». ([3])

  • Едсгер Дейкстра указував: «. то про що суспільство в більшості випадків просить — це зміїне масло. Природно, „зміїне масло“ має дуже вражаючі імена, інакше буде дуже важко щось продати: „Структурний аналіз і Дизайн“, „Програмна інженерія“, „Моделі зрілості“, інформаційні системи“ (Management Information Systems), що „Управляють, „Інтегровані середовища підтримки проектів“, „Об'єктна орієнтованість“, „Рєїнжінірінг бізнес-процесів“.» — EWD 1175: The strengths of the academic enterprise

  • Никлаус Вірт вважає, що ООП — не більше ніж тривіальна надбудова над структурним програмуванням, і перебільшення її значущості, що виражається, зокрема, у включенні в мови програмування все нових модних «об'єктно-орієнтованих» засобів, шкодить якості програмного забезпечення, що розробляється.

  • Патрік Киллеліа в своїй книзі «Тюнінг веб-сервера-сервера» писав: «. ООП надає вам безліч способів уповільнити роботу ваших програм .»

  • Відома оглядова стаття проблем сучасного ООП-програмування перераховує деякі типові проблеми ООП — Чому об'єктно-орієнтоване програмування провалилося

Якщо спробувати класифікувати критичні вислови на аресу ООП, можна виділити декілька аспектів критики даного підходу до програмування.

  • Критика реклами ООП.

Критикується явно висловлюване або таке, що мається на увазі в роботах деяких пропагандистів ООП, а також в рекламних матеріалах «об'єктно-орієнтованих» засобів розробки уявлення про об'єктне програмування як про якийсь всемогутній підхід, який магічним чином усуває складність програмування. Як помічав багато хто, зокрема згадані вище Брукс і Дейкстра, «срібної кулі не існує» — незалежно від того, якої парадигми програмування дотримується розробник, створення нетривіальної складної програмної системи завжди зв'язане із значними витратами інтелектуальних ресурсів і часу. З найбільш кваліфікованих фахівців в області ООП ніхто, як правило, не заперечує справедливість критики цього типу.

  • Заперечування ефективності розробки методами ООП.

Критики оспорюють тезу про те, що розробка об'єктно-орієнтованих програм вимагає менше ресурсів або приводить до створення якіснішого ПО. Проводиться порівняння витрат на розробку різними методами, на підставі якого робиться вивід про відсутність у ООП переваг в даному напрямі. Враховуючи крайню складність об'єктивного порівняння різних розробок, подібні зіставлення, як мінімум, спірні. З іншого боку виходить що рівно так само спірні і твердження про ефективність ООП.

  • Продуктивність об'єктно-орієнтованих програм.

Указується на те, що цілий ряд «природжених особливостей» ООП-технології робить побудовані на її основі програми технічно менш ефективними, в порівнянні з аналогічними необ'єктними програмами. Не заперечуючи дійсно наявних додаткових накладних витрат на організацію роботи ООП-ПРОГРАММ (див. розділ «Продуктивність» вища), потрібно, проте, відзначити, що значення зниження продуктивності часто перебільшується критиками. У сучасних умовах, коли технічні можливості комп'ютерів надзвичайно великі і постійно ростуть, для більшості прикладних програм технічна ефективність виявляється менш істотна, чим функціональність, швидкість розробки і сопровождаемость. Лише для деякого, дуже обмеженого класу програм (ПО вбудованих систем, драйвери пристроїв, низькорівнева частина системного ПО, наукове ПО) продуктивність залишається критичним чинником.

  • Критика окремих технологічних рішень в ООП-мовах і бібліотеках.

Ця критика численна, але зачіпає вона не ООП як таке, а прийнятність і застосовність в конкретних випадках тих або інших реалізацій її механізмів. Одним з улюблених об'єктів критики є мова C++, що входить до числа найбільш поширених промислових ООП-3