|
16 / 16 / 1
Регистрация: 13.10.2012
Сообщений: 454
|
|
Недостатки ООП16.05.2014, 16:35. Показов 22278. Ответов 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, сейчас учу основы ООП, где можно найти задачи по ООП |
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 12.09.2016, 16:40 | ||
|
0
|
||
|
Заблокирован
|
|||
| 12.09.2016, 20:16 | |||
|
ХОРОШИЙ учебник подразумевает, что в нем будут описаны не только достоинства того или иного метода/парадигмы, но и его недостатки Добавлено через 34 секунды Или хотя ГРАНИЦЫ ПРИМЕНИМОСТИ метода Добавлено через 3 минуты Вот пример
0
|
|||
|
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
|
|
| 12.09.2016, 21:47 | |
|
ИсмаилПркопенко, Скользкие места - это не учебник.
А вот на Озоне появился действительно хорошая книжка по стандартному С++ http://www.ozon.ru/context/detail/id/136427551/ Но там только язык с библиотекой. Формочек там нет. По формочкам я вам уже писал: можно книжки Культина, можно книжки Зиборова взять. Учебник по WinForms - это книжка Петцольда. Посмотрите опять же все это на Озоне.
0
|
|
| 12.09.2016, 21:50 | |
|
Не по теме: Этот коричневый поток на обложке символизирует то что я думаю? :D
0
|
|
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
||
| 12.09.2016, 22:40 | ||
|
Забавляет его фраза в начале, что он, типа, вкратце, а остальное на сайтах по С++ читайте.
0
|
||
|
236 / 196 / 21
Регистрация: 04.06.2014
Сообщений: 1,309
|
||
| 13.09.2016, 07:03 | ||
|
0
|
||
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
||
| 13.09.2016, 13:16 | ||
|
Я считаю, что давно уже пора визуальную часть тоже как-то стандартизировать, какой смысл придуриваться?
0
|
||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||
| 13.09.2016, 13:58 | |||
|
Добавлено через 6 минут Добавлено через 2 минуты При всем при этом ввод программ текстом это способ ввода эпохи телетайпов. Давно уже эпоха сенсорных панелей. Так что в ближайшем будущем все это должно кардинально измениться. Т.е. прийти к чему то наподобие ДРАКОН+ООП+КОП+визуальная сборка компонентов.
0
|
|||
|
Заблокирован
|
||
| 13.09.2016, 14:06 | ||
|
Набивать код посимвольно вручную - это просто титаническая работа. Все равно что зубочисткой пилить дерево в три обхвата. Давно уже пора придумать более адекватные способы представления программ
0
|
||
|
|
||||
| 13.09.2016, 15:32 | ||||
|
1
|
||||
|
Модератор
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,898
|
||
| 13.09.2016, 16:34 | ||
|
0
|
||
|
Заблокирован
|
||||
| 13.09.2016, 16:58 | ||||
|
Добавлено через 1 минуту
0
|
||||
|
Модератор
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,898
|
||
| 13.09.2016, 17:04 | ||
|
0
|
||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 13.09.2016, 17:15 | ||
|
0
|
||
|
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
|
|
| 13.09.2016, 17:27 | |
|
Mr.X, я не писал, что это - учебник.
Но книжка - хорошая. Это я как эксперт в книжках говорю. Написана по стандарту 2011 и 2014. Половина книжки - по шаблонам и метапрогроаммированию. Ориентирована на проги научно-числового программирования. Как я понял, автор - один из создателей Boost Graph Library, перевод которой я редактировал в издательстве Питер. Добавлено через 3 минуты SmittWesson, это понятно, Но в состав библиотек Java формочки входят в нескольких вариантах. А в стандартной библиотеке С++ формочек нет.
0
|
|
|
Заблокирован
|
|||
| 13.09.2016, 19:38 | |||
|
Бывает маленькая простая картинка/схема/диаграмма несет больше информации, чем 100 страниц кода. Тот же GUI текстом описывать заколебёсся. Добавлено через 6 минут Беда всех книжек по С++ - нет комплексного изложения. Ведь чтобы писать на С++ под венду не достаточно просто освоить синтаксис С++ и даже ООП. Нужно освоить IDE (а они сейчас МОНСТРОобразные) и сопутствующие инструменты (редакторы, отладчики, профилировщики, анализаторы кода и т.д. и т.п.. Нужно освоить событийно-ориентированную модель Windows Нужно освоить ряд библиотек, фреймворков, надстроек, обёрток, DSL-ей Нужно освоить языки описания GUI Да много чего нужно освоить прежде чем ты сможешь что называется "сесть и поехать"© И таких книжек нет. От слова САПСЕМ. Ну где программирование на С++ описывается в КОМПЛЕКСЕ Вся инфа РАЗМАЗАНА по десяткам книг. Это существенно осложняет "быстрый старт" для тех кто изучает программирование "с нуля"
0
|
|||
|
Модератор
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,898
|
|||
| 13.09.2016, 19:50 | |||
|
А вот в коде можно легко описать и это, и внешний вид: <ТекстовоеПоле Ширина=10 Высота=3 ВалидацияТип=Число ВалидацияИнтервал=(0,100) />
0
|
|||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||||
| 13.09.2016, 20:43 | |||||
|
Добавлено через 2 минуты Добавлено через 3 минуты Добавлено через 8 минут
0
|
|||||
|
Модератор
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,898
|
||
| 13.09.2016, 20:45 | ||
|
0
|
||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 13.09.2016, 20:47 | ||
|
0
|
||
| 13.09.2016, 20:47 | |
|
Недостатки React
Недостатки AnyLogic Какие недостатки недостатки системы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр.
Дословно, отклонённая. . .
|
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы
Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
|
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
|
Очистка реквизитов и табличных частей документа при копировании (вариант 2)
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2.
Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
|
|
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
|
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
|
сукцессия 43. Вторая научная статья за месяц- прайминг и гатгил
anaschu 25.07.2026
две стороны одной монеты
|
Более приземисто - Эстафету хвоста в .cdl (деревья эстафеты в сад).
Hrethgir 24.07.2026
В будущем, после написания блока инверсии обхода дерева (эстафеты хвоста), я планирую вернуться к нашему прошлому разговору о том, обладают ли знания целеполаганием. Тогда я пришел к выводу, что. . .
|