|
16 / 16 / 1
Регистрация: 13.10.2012
Сообщений: 454
|
|
Недостатки ООП16.05.2014, 16:35. Показов 22101. Ответов 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 Какие недостатки недостатки системы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров
В текущей версии модели успешно реализован ключевой механизм. . .
|
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям
Реализованные компоненты:
Механизм закисления почвы через протонную помпу
Конкуренция между типами микориз
pH как триггер сукцессии
C/ P соотношение. . .
|
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
|
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
|
|
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы
## О чём эта статья
В процессе построения ОДУ-модели (система дифференциальных. . .
|
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет)
Содержание проекта
Симуляция вековой (50 лет) экологической сукцессии в почве леса
Основные участники: АМ-гриб, ЭКМ-гриб,. . .
|
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов
Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
|
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация
В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
|