|
16 / 16 / 1
Регистрация: 13.10.2012
Сообщений: 454
|
|
Недостатки ООП16.05.2014, 16:35. Показов 23065. Ответов 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 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||
| 02.09.2016, 09:58 | |||
|
Добавлено через 54 секунды
0
|
|||
| 02.09.2016, 09:59 | |
|
0
|
|
|
2083 / 1576 / 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
|
|
|
Модератор
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,912
|
||||
| 02.09.2016, 10:10 | ||||
|
Добавлено через 1 минуту Добавлено через 4 минуты Добавлено через 1 минуту А какой тип используете Вы для хранения строк?
0
|
||||
|
2083 / 1576 / 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 / 1576 / 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
|
|
|
Модератор
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,912
|
|||
| 02.09.2016, 10:23 | |||
|
Писать свой велосипед для решения каждой задачи - очень непроизводительно. Хотя, возможно, все Ваши задачи более-менее одинаковые. По одному факту, что Вам хватает AnsiString, можно сделать вывод о том, что Вам не приходилось сталкиваться с очень широким классом задач. Подозреваю, что у Вас никогда не было так, что некий чужой код не компилируется, потому он написан для другой версии компилятора и, чтобы он заработал, Вам нужно в одном из многочисленных хидеров Вам нужно поменять порядок инклудов. И хорошо, если этот хидер не из тех, что идут в составе ИДЕ.
0
|
|||
|
2083 / 1576 / 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 / 1576 / 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 / 1576 / 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 / 1576 / 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 Какие недостатки недостатки системы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|