|
16 / 16 / 1
Регистрация: 13.10.2012
Сообщений: 454
|
|
Недостатки ООП16.05.2014, 16:35. Показов 22169. Ответов 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 Какие недостатки недостатки системы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
сукцессия 30. Фосфорный и азотный замки по "честному" закону лимитирования Либиха
anaschu 16.07.2026
Основные достижения за последние дни
1. Механизм отложенного высвобождения фосфора
Добавлен специальный пул для медленного разложения меланизированных гиф ЕСМ
Реализована разная скорость. . .
|
Запрет пометки на удаление и отмены проведения
Maks 16.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "ПутевойЛист" разработанного в КА2.
Задача: запретить помечать на удаление и отменять проведения путевого листа при условии, если он сдан. . .
|
Как надо было делать правильно - вообще не слушать ИИ, его дело - текст.
Hrethgir 15.07.2026
А вообще надо было делать не так, чтобы не исправлять ошибку https:/ / www. cyberforum. ru/ blogs/ 223907/ 10996. html , правильно было : удалил кнопку, а потом добавил её.
Всё это стресс конечно. Почему?. . .
|
Знаете, от чего появляется стресс?
kumehtar 15.07.2026
Стресс появляется оттого, что вы, зная как поступить правильно, делаете наоборот.
Ларри Уингет
|
|
Нас бьют, а мы крепчаем? Какая чушь!
kumehtar 15.07.2026
Вот это вот бытующее мнение, что человек меняется только под действием проблем, всегда считал вредоносным. Поверь, от проблем у людей появляются не изменения, а нервное расстройство и ПТСР. А. . .
|
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров
В текущей версии модели успешно реализован ключевой механизм. . .
|
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям
Реализованные компоненты:
Механизм закисления почвы через протонную помпу
Конкуренция между типами микориз
pH как триггер сукцессии
C/ P соотношение. . .
|
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
|