|
16 / 16 / 1
Регистрация: 13.10.2012
Сообщений: 454
|
|
Недостатки ООП16.05.2014, 16:35. Показов 22201. Ответов 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 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||
| 29.08.2016, 18:46 | |||
|
А в более других задачах может возникать и потребность в более других задачах по управлению памятью. Например удаление объекта на который имеется множество ссылок с обнулением/извлечением из списков ссылок на него. К примеру в С++ никто давно без автомата управления памятью тоже никто не работает. Но автомат можно делать любой под свои нужды. При этом иметь несколько механизмов для разных объектов даже в одной программе а то и структуре данных.
0
|
|||
|
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 31.08.2016, 00:05 | ||
|
0
|
||
|
Модератор
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,898
|
|||
| 31.08.2016, 09:19 | |||
|
И, насколько я понимаю, что для того, чтобы удалить объект из списка, его найти и удалить. Математическая задача. Затраченное время (асимптотика) зависит от используемой структуры данных и не зависит от языка программирования. Добавлено через 3 минуты
0
|
|||
|
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||||
| 31.08.2016, 18:49 | |||||
|
Добавлено через 51 секунду Добавлено через 6 минут Добавлено через 6 минут
0
|
|||||
|
Модератор
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,898
|
|||
| 31.08.2016, 19:26 | |||
|
Добавлено через 1 минуту
0
|
|||
|
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||||
| 31.08.2016, 22:18 | ||||
|
Вобще друг в Филадельфии работает тим-лидом по задачам для бизне-процессов корпораций, разрабатывают на Java. Говорит $100k- предел для тимлида джавы, для С++ это ниже з/п мидла а то и джуниора с годом опыта. Т.е. раскладка там по языкам такая - для бизнес-процессов корпораций достаточно Java максимум C#. А С++ это для настоящих мужиков которые ракеты в космос запускают, реакторами и роботами управляют, ну как минимум лепят CAD для всех этих космических ядерных авиационных и т.п. дел. Хотя при всем при этом даже $40k/год по меркам США очень даже не плохая з/п. Добавлено через 3 минуты Добавлено через 27 минут А вот к примеру двумерные или более мерные массивы лежащие в памяти одним куском и имеющие высокую скорость доступа в джаве будет создать невозможно.
0
|
||||
|
Модератор
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,898
|
|||
| 31.08.2016, 23:12 | |||
|
Не видел ни на одном сайте, чтобы средняя з/п программиста на каком бы то ни было языке составляла 150-180к. И чтобы программисту с опытом 1 год предлагали 100к.
0
|
|||
|
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||||
| 01.09.2016, 00:10 | ||||
|
Да кстати $100k с в/о это не очень высокая з/п. К примеру у экспертов ФБР c в/о и опытом 3 года по любой инженерной специальности з/п начинается от $100k/год. При этом все остальные инженерные специальности в целом по США оплачиваются раза в 2 ниже чем программисты. Вообще программисты в штатах вместе с дантистами и юристами составляют тройку наиболее высоко оплачиваемых профессий. Добавлено через 21 минуту 4-5 лет пользования С++ - как раз для выпускника колледжа. (там опыт пользования языка указывают а не опыт работы, опыт работы(Career level) - Entry т.е. фактически вообще без опыта работы приймут). И таких там валом.
0
|
||||
| 01.09.2016, 00:18 | |||
|
Не по теме:
http://www.payscale.com/resear... per/Salary http://www.payscale.com/resear... eer/Salary
0
|
|||
| 01.09.2016, 00:24 | |
|
0
|
|
| 01.09.2016, 00:26 | ||
|
Не по теме:
Бакалавр: https://www.cybercoders.com/ja... job-289128 120 -150 Небакалавр: https://www.cybercoders.com/ja... job-259379 130 - 150
0
|
||
|
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||||
| 01.09.2016, 01:17 | |||||
|
Не по теме:
Working knowledge of C, C++, & at least one scripting language (bash, Perl, Python, Ruby …
Добавлено через 24 минуты Не по теме:
Добавлено через 8 минут Не по теме: А вот процент яванцев и приплюснутых заморачивающихся такими вещами как к примеру тороидальный коллайдер или решение уравнений привязки элементов эскиза или даже банальное сложение моментов и импульсов по определению абсолютно разное при чем у яванцев в районе 0. (те кто этим заморачивается быстренько на С++ перебегают)
0
|
|||||
|
Модератор
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,898
|
|||
| 01.09.2016, 02:07 | |||
|
0
|
|||
|
440 / 432 / 159
Регистрация: 21.05.2016
Сообщений: 1,338
|
|
| 01.09.2016, 02:32 | |
|
В Австралии, как и в США, судя по приведенным выше ссылкам, зарплаты не зависят от определенного языка. Что java, что c++, что python, зарплаты и требования примерно одинаковые при равных уровнях квалификации. Только работы на java в 5 раз больше чем на с++.
Чтобы устроиться на junior позицию требуется 1-3 года опыта и/или профильное университетское образование.
0
|
|
|
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||||
| 01.09.2016, 03:20 | ||||
|
Добавлено через 19 минут В США и Западной Европе в этом плане ситуация абсолютно другая. Разные классы задач разные з/п. При этом разработка промышленного и софта ведется преимущественно на С++. Добавлено через 5 минут
0
|
||||
|
440 / 432 / 159
Регистрация: 21.05.2016
Сообщений: 1,338
|
|
| 01.09.2016, 03:30 | |
|
0
|
|
|
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 01.09.2016, 03:47 | ||
|
0
|
||
|
440 / 432 / 159
Регистрация: 21.05.2016
Сообщений: 1,338
|
|
| 01.09.2016, 03:49 | |
|
0
|
|
|
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||
| 01.09.2016, 03:55 | |||
|
Добавлено через 1 минуту
0
|
|||
|
440 / 432 / 159
Регистрация: 21.05.2016
Сообщений: 1,338
|
|
| 01.09.2016, 03:58 | |
|
0
|
|
| 01.09.2016, 03:58 | |
|
Недостатки 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
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
|