Является ли объектно-ориентированное программирование решением проблемы сложности?

Является ли объектно-ориентированное программирование решением проблемы сложности?
Является ли объектно-ориентированное программирование решением проблемы сложности? - laviperchik @ Unsplash

У сложности нет решения.

В «Мифическом человеко-месяце» Фред Брукс обсуждает разницу между случайной и существенной сложностью в программировании. Случайная сложность вызвана нашими инструментами и методами, такими как необходимость писать и тестировать дополнительный код на языке, потому что мы не можем напрямую выражать свои идеи, и тому подобное. Новые методы и приемы могут уменьшить случайную сложность. Я могу писать программы быстрее и лучше, чем двадцать пять лет назад, потому что у меня есть лучшие языки и инструменты.

Существенная сложность исходит из того факта, что то, что мы пытаемся сделать с помощью программирования, изначально сложно, и существует непреодолимая сложность. «Существенный» в данном контексте означает «относящийся к сути вещи», а не «очень необходимый».

Поэтому он утверждал, что серебряной пули не будет, что написание программного обеспечения по-прежнему будет трудным.

Я настоятельно рекомендую вам прочитать его книгу: в частности, я рекомендую издание «Серебряная годовщина» с дополнительным эссе «Нет серебряной пули». При этом он рассматривает предлагаемые решения сложности и рассматривает их влияние. (Что он считает наиболее эффективным, так это упаковочное программное обеспечение: один раз написать что-то сложное и продать тысячи или миллионы копий.)

Теперь объектно-ориентированное программирование помогает, если все сделано правильно, создавая абстракции и скрывая сложность. Объект класса имеет определенное определенное поведение, из которого мы можем сделать выводы, не заботясь о сложности реализации. Правильно написанные классы слабо связаны друг с другом, а принцип «разделяй и властвуй» — отличный способ справиться со сложностью, если вам это сойдет с рук. Они также обладают высокой связностью, поскольку представляют собой набор функций и данных, очень тесно связанных друг с другом.

Прикрепляю к посту несколько видео по теме:

Прикрепленное видео 1 - Что такое ООП (объектно-ориентированное программирование)?

Прикрепленное видео 2 - Объектно-ориентированное программирование за 10 минут

Прикрепленное видео 3 - ООП на простых примерах. Объектно-ориентированное программирование


LetsCodeIt, 24 мая 2023 г., 08:26