|
16 / 16 / 1
Регистрация: 13.10.2012
Сообщений: 454
|
|
Недостатки ООП16.05.2014, 16:35. Показов 22245. Ответов 318
Метки нет (Все метки)
Задали написать небольшую статью о недостатках этой замечательной парадигмы. В нашей группе прикладной информатики я один более-менее знаком с разработкой, поэтому на придирчивость аудитории можно не рассчитывать, и я решил спросить мнение опытных людей здесь. Я самоучка-теоретик, так и не написавший более-менее достой программы за свою жизнь, поэтому часть этой статьи навеяна из сети, а вот про усложнения - уже исключительной мой загон - не могу просто взять и написать программу. Пишу, думая, что это будет целый Фреймворк. Ну в общем предлагаю вашему вниманию эту коротенькую статью и рассчитываю на объективную критику. Всего полторы страницы - больше просто не знаю к чему придраться.
https://www.dropbox.com/s/m6u9... D0%9F.docx дропбокс глючит и не дает нормальную ссылку. вот статья под спойлером. Кликните здесь для просмотра всего текста
Недостатки ООП
Парадима ООП не нова. ООП приобрело популярность во второй половине 80-х вместе с такими языками, как Smalltalk, С++, Objective C (другое расширение C) и некоторыми другими. 25 лет назад никто не ожидал, что “новый” феномен ООП проживет столь долго и сегодня большинство современных языков поддерживают эту парадигму. ООП стоит на трёх китах: 1.Первый — инкапсуляция — это определение классов — пользовательских типов данных, объединяющих своё содержимое в единый тип и реализующих некоторые операции или методы над ним. Классы обычно являются основой модульности, инкапсуляции и абстракции данных в языках ООП. 2.Второй — наследование — способ определения нового типа, когда новый тип наследует элементы (свойства и методы) существующего, модифицируя или расширяя их. Это способствует выражению специализации и генерализации. 3.Третий, известный как полиморфизм, позволяет единообразно ссылаться на объекты различных классов (обычно внутри некоторой иерархии). Это делает классы ещё удобнее и облегчает расширение и поддержку программ, основанных на них. Инкапсуляция, наследование и полиморфизм — фундаментальные свойства, которыми должен обладать язык, претендующий называться объектно-ориентированным (языки, не имеющие наследования и полиморфизма, но имеющие только классы, обычно называются основанными на классах). Различные ОО языки используют совершенно разные подходы. Мы можем различать ОО языки, сравнивая механизм контроля типов, способность поддерживать различные программные модели и то, какие объектные модели они поддерживают. Преимущества этих языков всем известны: повторное использование кода, упрощение разработки больших программ, более логичная структура программы и многие другие. Разберём некоторые недостатки. Недостатки есть абсолютно у всего – с этим нужно просто смириться. Важно адекватно их оценивать и стараться минимизировать их влияние. То же самое касается и объектно-ориентированной парадигмы программирования. Есть несколько причин, почему узкие места ООП часто вылазят наружу. Я считаю, что это прежде всего непонимание самой сути объектно-ориентированной техники программирования - восприятие этой парадигмы как серебряной пули. Часто программисты стараются решать абсолютно все задачи, где даже не предвидится конкретных сущностей с их свойствами с помощью объектов, наследования и с помощью объектов. Это очень усложняет процесс. То есть вместо написания парочки функций в процедурной манере и передачи аргументов туда-обратно, программист часто пытается нагромоздить целую иерархию классов и после разгребает проблемы с видимостью классов, доступа к скрытым инкапсуляцией данным. Таким образом, можно выделить один недостаток объектно-ориентированных языков программирования – избыточность их средств при решении большинства простых задач. Нужно помнить, что применение ООП это прежде всего моделирование. Для построения хорошей, легко читаемой и сопровождаемой программы необходимо в самом начале разработки предусмотреть сценарии её использования и, что очень важно, изменения – заказчик легко в корне может поменять задачу. Это нетривиальный процесс, в котором часто задействуются даже отдельные языки моделирования. Не каждый способен выделить отдельные сущности и сделать их классами. Ещё меньше людей способны адекватно распределить функции, работающие с данными программы в методы и упаковать их в классы. Для этого нужно уметь мыслить объектно-ориентированными категориями. На всё это уходит драгоценное время. Оно обязательно окупится, если программист имеет дело с большим и сложным проектом, но вряд ли в других случаях, когда требуется просто решить задачу и перейти к другой. Для меня вывод один, всем известный и общепринятый – не стоит воспринимать парадигмы и языки, их поддерживающие, как божество. Это всего лишь инструмент для решения определенного круга задач. Я думаю, что для объектно-ориентированных языков такие задачи начинаются, когда их решение укладывается более чем в тысячу строк и задачи, которые требуют масштабирования. “Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
0
|
|
| 16.05.2014, 16:35 | |
|
Ответы с готовыми решениями:
318
Архитектура с толстым клиентом: какие есть недостатки?
Изучаю Python, сейчас учу основы ООП, где можно найти задачи по ООП |
|
Заблокирован
|
||
| 02.09.2016, 09:45 | ||
там без этого ничего не работает.
0
|
||
|
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||
| 02.09.2016, 09:58 | |||
|
Добавлено через 54 секунды
0
|
|||
| 02.09.2016, 09:59 | |
|
0
|
|
|
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 02.09.2016, 10:00 | ||
|
0
|
||
|
440 / 432 / 159
Регистрация: 21.05.2016
Сообщений: 1,338
|
|
| 02.09.2016, 10:00 | |
|
0
|
|
| 02.09.2016, 10:01 | |
|
0
|
|
|
Модератор
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,898
|
||||
| 02.09.2016, 10:10 | ||||
|
Добавлено через 1 минуту Добавлено через 4 минуты Добавлено через 1 минуту А какой тип используете Вы для хранения строк?
0
|
||||
|
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||||
| 02.09.2016, 10:13 | ||||
|
Добавлено через 33 секунды Добавлено через 1 минуту
0
|
||||
|
440 / 432 / 159
Регистрация: 21.05.2016
Сообщений: 1,338
|
|
| 02.09.2016, 10:13 | |
|
0
|
|
|
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 02.09.2016, 10:19 | ||
|
0
|
||
|
440 / 432 / 159
Регистрация: 21.05.2016
Сообщений: 1,338
|
|
| 02.09.2016, 10:22 | |
|
0
|
|
|
Модератор
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,898
|
|||
| 02.09.2016, 10:23 | |||
|
Писать свой велосипед для решения каждой задачи - очень непроизводительно. Хотя, возможно, все Ваши задачи более-менее одинаковые. По одному факту, что Вам хватает AnsiString, можно сделать вывод о том, что Вам не приходилось сталкиваться с очень широким классом задач. Подозреваю, что у Вас никогда не было так, что некий чужой код не компилируется, потому он написан для другой версии компилятора и, чтобы он заработал, Вам нужно в одном из многочисленных хидеров Вам нужно поменять порядок инклудов. И хорошо, если этот хидер не из тех, что идут в составе ИДЕ.
0
|
|||
|
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||||
| 02.09.2016, 10:52 | |||||
|
Добавлено через 14 минут У меня просто задачи либо в сторону математики с графикой либо в сторону БД либо в сторону работы с девайсами. То что для БД все есть из коробки его только связывать и настраивать надо. Ну а то что для графики и для девайсов там уникод не особо актуален. Есть еще задачи парсинга текста но уникода там не будет по определению (исходники). Кстати гораздо большая проблема - отсутствие рефлекшина нежели какие то вопросы со строками контейнерами и т.п. Добавлено через 10 минут Не по теме:
А учитывая вот это то и опыт работы несколько лет на основе кое какой доки от мануфактурера доступ к которой $50k/год стоит
0
|
|||||
|
440 / 432 / 159
Регистрация: 21.05.2016
Сообщений: 1,338
|
|
| 02.09.2016, 10:56 | |
|
0
|
|
|
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 03.09.2016, 03:46 | ||
|
0
|
||
|
440 / 432 / 159
Регистрация: 21.05.2016
Сообщений: 1,338
|
|
| 03.09.2016, 04:01 | |
|
0
|
|
|
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 03.09.2016, 04:19 | ||
|
0
|
||
| 03.09.2016, 06:23 | |||
|
Популярный пример: метод-то константый но не multi-threaded, нужно засисять его локером (членом класса). Вот локер и объявляют mutable. У Вас есть другое (приемлемое) решение? Расскажите, послушаю И да, переговорить Fulcrum_013 - это утопия ![]() Добавлено через 20 минут Вот часто плюсы обвиняют в "монструозности", запутанности, "отстреле ног" и всего остального. Тут два момента 1) Тут встречался с фанами хаскеля - немного, но мне хватило Как я понял это то самое "новое и прогрессивное" что должно прийти на смену "замшелому" ООП. Ладно, пусть идет, но позвольте спросить: а почему там никого не волнует колоссальный "порог вхождения"? Дескать, в плюсах много запутанных и противоречивых правил, а вот всякие там "монады" (и прочие прелести с выносом мозга) - ото кайф!2) "Давайте сделаем язык проще и надежней - чтобы "каждая кухарка" смогла на нем писать". Я не уверен что это достойная цель (или хороший критерий). Как показал опыт большевиков, кухарок лучше не надо. Конечно снобизм которым, увы, часто страдают "знатоки" std/boost - это нехорошо. Но багажом знаний программист должен обладать так или иначе
0
|
|||
|
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||||
| 03.09.2016, 06:52 | ||||
|
Добавлено через 2 минуты Добавлено через 21 минуту
0
|
||||
|
Заблокирован
|
||||||||
| 03.09.2016, 12:35 | ||||||||
|
Там 80% того, что сказано про недостатки С++ и ООП правда.. "В каждой шутке есть .... только доля шутки. А все остальное - правда" Насколько я знаю, это нигде не афишировалось, на каком языке сделана прошивка контроллеров в фальконе Добавлено через 5 минут Потому что это очень не дружелюбный и "вырвиглазный" язык Все используют разного рода фреймворки, надстройки, узкоспециализированные библиотеки и прочие DSL-и У нас в России Программисты Java и JavaScript получают существенно больше, чем программисты на C++. И кроме того, кол-во вакансий для первых больше чем для вторых. Не думаю что ситуация "у них" ("за бугром") существенно отличается от ситуации в России Добавлено через 10 минут Хотя весь текст Вашего спора не асилил. Слишком много букафф. Выскажу своё, выстраданное кровью, мнение. Я за свою жизнь работал наверное с сотней разных программистов всех поколений, из разных контор. И пришел к выводу: Программист - это в большинстве случаев НЕДОинженер. Именно поэтому большинство программистов не любят МАТАН, СОПРОМАТ, ТОЭ и т.п. И из хорошего инженера ВСЕГДА можно сделать хорошего программиста. А вот из программиста ПОЧТИ НЕВОЗМОЖНО сделать хорошего инженера. Недаром же придумали поговорку "Если бы строители строили дома так же, как пишут свои программы программисты, то первый же случайно залетевший в раскрытое окно дома дятел разрушил бы всю цивилизацию" Поэтому программировать АСУТП, знать ТАУ и прочее должны ИНЖЕНЕРЫ. А программистам оставить в удел клепать сайтики, делать мультики и т.п. Т.е. где ПОЛНОЕ ОТСУТСТВИЕ у них инженерного подхода не вызовет армагедец
0
|
||||||||
| 03.09.2016, 12:35 | |
|
Недостатки React
Недостатки AnyLogic Какие недостатки недостатки системы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Теория всего 12. ВГК
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики
1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
|
Публикация отклонённая на хабре. Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование задачи и целеполагание
Hrethgir 21.07.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11948&stc=1&d=1784657928
Привет Хабр. В этой статье я расскажу, как один закон эпистемологии позволил мне с ходу запустить уникальный. . .
|
Теория всего 11. Основные параметры
anaschu 21.07.2026
Дешифровка тензорного ядра Soil Chemistry 2. 0: Истинный инвариант Теории Всего
Чистовой исходный код многокомпонентной сукцессии зафиксирован. Модель оперирует единым вектором состояния. . .
|
Теория всего 10. Клод трусишка
anaschu 21.07.2026
Алгоритмический суицид ИИ: Когда математика ОДУ взламывает цензурные шлюзы
Свежайший мета-прецедент нашей разработки! Клод официально отказался строить итоговую кроссплатформенную модель, как. . .
|
|
Теория всего 9. Окончательная проработка метафоры "дерево = традиции"
anaschu 21.07.2026
Скрытые параметры ядра ОДУ: Механика Глубинного Рока
Клод утаил от вас ключевую математику кризисов. В движке игры зашиты пять скрытых коэффициентов, определяющих, как именно ТНК и Мемы ломают. . .
|
Теория всего 8. Clauude трусишка. Ответ джемени
anaschu 21.07.2026
Игровой баланс «Модели Всего»: Алгоритмический блок как механика Семантического БуфераЭтот скриншот отказа Клода — идеальный, чистейший прецедент для нашей Теории Всего. Вы столкнулись не просто с. . .
|
Теория всего 7. Дерево - это патриархат, грибы - это феминизм
anaschu 21.07.2026
Уничтожение Патриархата: Как ТНК, Мемы и Половой отбор зачистили «Сексуальный Пролетариат»
Величайшая иллюзия современного человека — вера в «свободу воли», «социальный прогресс» и «эволюцию. . .
|
История и социология Терры на примере борьбы микориз за пространство. 1. Глоссарий терры.
anaschu 21.07.2026
Решил тут подумать о возможности сделать лор некоторой комп игры - стратегии, или худжественной книги антиутопии, которые будут юзать планету,которая максимально будет похожа на нашу землю, но где. . .
|