ООП - зло и не только для микроконтроллеров

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

ЕвгенийП пишет:

Зря вы кормите тролля. Добром не кончится, а ему только того и надо.

Устроит срач - снова будет забанен. Если еще не подкупил Админа ;)))))))

Beginer123
Offline
Зарегистрирован: 23.11.2018

wdrakula пишет:

Beginer123 пишет:

Спасибо, только вот осталось непонятным: в вашей аллегории Арудино Уно - это самолет, поезд, мотоцикл или лисапед?

Или скажем так: есть задача попасть из Москвы в Новосибирск. Есть Ардуино Уно - ну пусть будет мотоцикл. КМК, ООП - это вариант оснастить этот мотоцикл сауной, туалетом и кухней и все же попытаться доехать до Новосиба.

Ты ничего не понял. Если без аналогий, то не надо вообще использовать Уно для задач такой сложности, где помешает использование ООП.

Вполне. Я ж бегиннер, мне можно. :) Ну вот мне и интересно: если "не надо использовать УНО, там где нужен ООП", то верно ли обратное: "не надо использовать ООП в задачах Ардуино"? то есть первый пост верен..

wdrakula пишет:

На маленьких задачах некритичен перерасход памяти, а для больших нужно взять другой контроллер. Никак не может быть первичной (кроме целей обучения) задача - впихнуть "три энкодера и 5 шаговых моторов плюс термостат и веб сервер" - в Уно (пример условный).

Согласен, что в общем случае всегда "можно взять другой контроллер", но вот вопрос: у меня есть уже Нано, могу ли я её использовать с ООП лучше чем без него?

wdrakula пишет:

======================

Полный ответ такой: Если ты хочешь, но не можешь запрограмировать свой код используя ООП и у тебя не стоит за спиной СМЕРШевец с автоматом, то выбери другой контроллер.

А если у меня УЖЕ есть микроконтроллер, то я обязательно должен его программировать с ООП так что ли? Я вот уже который раз и спрашиваю: что дает применение ООП для УНО конкретно? можете привести пример где это явно имеет преимущества?

wdrakula пишет:

Другое дело, если ты просто не любишь кодить в ООП. Это уже просто вкусовщина, пока ты единственный разработчик в проекте - кодь хоть в машинных кодах - твое дело.

В Ардуино я не только "единственный разработчик" но ещё и единственный потребитель, ну .. кроме жены. Собственно в ООП - умею. Люблю или нет? Не знаю, не задумывался. Способ как один из многих, но недостатки озвученные в статье - вижу наглядно в том коде, что приходится развивать и править по работе. Поэтому и согласен с автором статьи и всеми его ссылками. Ну что понял конечно же. Там не все мне понятно и много.

Мнение Архата про статью: "Любую идею можно довести до абсурда и ООП тут не панацея. Больше того! ООП провоцирует на избыточную вложенность и косвенность, а за все надо платить. Поэтому за борьбу со сложностью проекта в целом платим временем исполнения и памятью. в Ардуино это все НЕ НАДО, все и так слишком просто и часто крайне мало памяти и недостаточно скорости, а соотвественно - дорого. В Ардуино нет задач, требующих ООП"

Собственно и хотел примерчик, где в Ардуино с ООП лучше чем без него. Какой-нибудь конкретный пример, чтобы показать - вот, смотрите тут надо ООП в Ардуино.

wdrakula пишет:

Как бы "контрольный в голову": плохи не те програмисты, которые применяют String в МК, а те, кто его плохо применяет.

В java бесконтрольное создание стрингов в объектах часто проходит безнаказанно из-за сборщика мусора. Но нормальные програмисты за собой чистят, перед выходом.

Согласен.

Ворота
Ворота аватар
Онлайн
Зарегистрирован: 10.01.2016

Beginer123 пишет:
у меня есть уже Нано, могу ли я её использовать с ООП лучше чем без него?

Ты - не можешь. Могут те, кто "умеет это готовить".

Beginer123 пишет:

Собственно в ООП - умею. 

Это тебе так кажется, но твоё мнение ошибочно. Не умеешь. Умел бы - не было бы этого поста.

Beginer123 пишет:

Мнение Архата

Архат, ну, задрал уже! Взрослые же люди!

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Половина вопросов - не ко мне. ;) Я дядька не молодой, мне скоро полтинник. Старого кобеля новым трюкам учить непросто.

Я для АВР пишу без ООП. Но ты снова ничего не понял:

Ты пишешь "у меня есть контроллер, как мне програмировать мой контроллер?" - а я отвечаю, что вопрос абсурден. Программируют контроллер - школьники на информатике. Люди - решают задачи. Не задача под контроллер, а контроллер под задачу. Если тебе неудобно использовать Нанку - выкинь ее, она стоит 200р.

Нет задачи писать с ООП или без него. Люди просто решают задачи. Кто с ООП, кто - без.

Это не "линия партии", нет правильного и неправильного пути. Неправильно только отказываться от инструмента "из принципа".

Тебе говорят: не хочешь не используй.

Ты говоришь: кто использует - дурак ;))

Разницу понимаешь?

----------------------

Вот как еще показать?

Для себя - делай как нравится. Если публикуешь - делай читаемым и удобным, а это автоматом - ООП.

 

Как пример для любимых тобой Уно-Нано - посмотри как написана фастлед. Одна из лучших библиотек для лент. Я не люблю библиотеки в МК, обычно все пишу с ноля. Но это реально очень хорошо сделано, причем именно для МК, посмотри там на отдельную математику.

Посложнее - JSON для ESP. - там ты можешь не понять исходник, все таки уровень програмирования другой. Но это примеры великолепного кодинга.

Эти оба примера - ответы на твою просьбу показать: "Вот тут надо ООП в Ардуино".

======================================================================

И по аргументам про избыточную косвенность, вложенность и прочий бред. Оставь оптимизацию - компилятору, ОК? ООП это технология для ПРОГРАММИСТА, а не для эффективности кода. Эффективность кода должен обеспечить компилятор. Поэтому делают все более глубокий анализ кода и вычисления этапа компиляции.

Перед програмистом теперь не стоит задачи видеть "внутренним зрением" во что прератится его код в машине. А если это кластер? а если часть вычислений уйдут на видеопроцессор, а часть вообще в аутсорс в сеть? Тебе не нужно этого знать. Так развивается вычислительная техника.

Вебовцы уже привыкли к такому, пора и нам. Веб разработчик часто не знает на какой машине будет выполниться его код, часть разные части скриптов могут выполняться на разных точках и потом собраться и окончательно отрендерится в браузере. Даже роутинг уже может исполняться на клиенте частично.

-----------------------------------------

Даже в контроллере - посмотри код без оптимизатора и с ним.

Ты просто хочешь застрять на пороге. Времена, когда ООП код терял часть эффективности за счет избыточной косвенности - почти прошли. Оптимизатор выкинет ненужные уровни. Не эта версия, так следующая. Если ты хочешь кодить не на PDP-11, то мысли шире. Производитель чипа сделает чип с гигами памяти, автор компилятора использует эти ресурсы, а програмист должен описать алгоритм понятно и удобно.

Чтобы не восторгаться конспирологической тупостью, типа приведенной статьи, изучи разные языки. Изящество JS, целиком построенного на идее словаря. Java, полность построенная на ссылках. Python - полиморфизм в нем выше небес! Это вообще шедевр, не даром вся работа с бигДата и нейросетями сейчас строится на нем. Пойми вектор развития програмирования. Он не в выкравании двух байт заменой логн на инт.

Искусство програмиста, пишущего абсолюто эффективный код вручную на "честном С" или асме так же уйдет в хобби, как искусство часовщика, делающего механику для щвейцарских часов. Даже механические часы идут с кварцевым механизмом машинного производства. Так и код - оставь эффективность оптимизатору, он лучше разберется. (хоть Логик и против ;)))) )

Beginer123
Offline
Зарегистрирован: 23.11.2018

Wdrakula, спасибо посмотрю. Про применение ООП в других местах, в целом, как-бы Вы не хотели за будущее, но пока что вижу - расходы есть и далеко не малые. Работаю на PHP и JS, да и то ограничено, только Jquery. Ардуино для меня - хобби, освоил только Си часть и С++ только в применяемых классах "как это использовать".

Есть, к примеру, "саморощенная СРМ" (похоже где их нет), писалась лет 20 до меня. Мало того, что там внутри Zend Framework, так он ещё и в разных местах разный: есть 1.5, есть 1.11, есть 2.х и даже Юй с доктриной присутствует наряду с ангуляром, вуем и редиской и кучей того, что для меня "темный лес". А кроме него есть ещё писанный кем-то поверх всего свой фреймворк с хелперами, сервисами, депенденси инжектион и событиями с обработчиками и поведениями, причем как на стороне сервера так и на стороне клиента на JQuery. Все это имеет своих брокеров, визуализаторов, кешаторы и пр. "над объекты" .. уровень косвенности? Да умопомрачительный! Профилятор выдает до 250-и(!) вложенных вызовов на запрос странички! Хорошо, сервак имеет 128 гигабайт и 32 проца на 200 пользователей и вся БД лежит в его оперативной памяти целиком .. и вот это все на пару программистов "средней руки" .. килотонны кода, и все сплошь виртуальный ООП.

Не верю, что кто-то когда-то создаст оптимизирующий компилятор, который разгребет подобного рода авгиевы конюшни ООП. А ведь написано все "по инструкции", все строго - каждый объект предоставляет свои методы, управляет ровно тем, чем надо и т.д. Внести изменения в код - дело нескольких часов, из которых часа 3 уйдет на поиск нужного метода нужного класса и минут 5-15 на дополнение.

Обязательно посмотрю Ваши примеры хорошего ООП для Ардуино, правда интересно, спасибо. Но вот и Вы пишете "для АВР пишу без ООП", и Архат "без ООП" и вообще использует технологии ООП на голом С! И другие, кого видел уже из "преподавателей ардуино" у нас тут - внезапно но тоже "без ООП"!

Сдается мне что это "без ООП" для Ардуино далеко не случайно. :)

sadman41
Онлайн
Зарегистрирован: 19.10.2016

Меня не покидает чувство, что каждым своим постом Beginer123 как бы произносит: "Это, конечно, всё хорошо, что вы тут мне пишете, но ведь ООП - это же говно, правда?". 

 

b707
Offline
Зарегистрирован: 26.05.2017

sadman41 пишет:

Меня не покидает чувство, что каждым своим постом Beginer123 как бы произносит: "Это, конечно, всё хорошо, что вы тут мне пишете, но ведь ООП - это же говно, правда?". 

 

ну это несомненно. Вопрос в другом - нафига его переубеждать? ну не нравится ему ООП - ну пусть не пишет на нем. Нам-то что за дело до этого?

Beginer123
Offline
Зарегистрирован: 23.11.2018

Wdrakula, спасибо за развернутый ответ, переслал его Архату и получил от него письмо. Мне кажется что я понял Вас обоих и свой вывод сделал:

ООП - это технология (стиль) для программиста, предложенный с целью упрощения разработки сложных программных комплексов. Соответственно, применение его в Ардуино избыточно и неоправдано, но возможно и только для писания библиотек широкого применения и то с оговорками. Как стиль, решая свою задачу, он привносит и свои проблемы, которые в первую очередь связаны со сложностью построения оптимизирующих систем и соответственно приводит к усложнению и замедлению исполняемого кода. В общем как и любой инструмент применяться должен с умом.

Привожу текст письма, исключительно для Вас, чтобы не выглядело голословно, и на этом закрываю для себя этот вопрос.

ТЕКСТ ПИСЬМА как есть, без купюр:

Wdrakula - математик и просто обязан знать теорию языков программирования "на отлично". Соответственно вот тут:
 

> И по аргументам про избыточную косвенность, вложенность и прочий бред. Оставь оптимизацию - компилятору, ОК?
> ООП это технология для ПРОГРАММИСТА, а не для эффективности кода. Эффективность кода должен обеспечить компилятор.
> Поэтому делают все более глубокий анализ кода и вычисления этапа компиляции.

Он прав. ООП - это технология для программиста и созданная в общем-то с одной целью - бороться со сложностью задачи. Посмотрел Ваш 20-и летний вертолет - все там хорошо и нормально написано как раз с целью борьбы со сложностью. За 20 лет ваш код менял свои бизнес-задачи далеко не единожды, но в нем есть те участки, что работают с "самого основания", потому что это - пример грамотного ООП и именно как технологии. Да, много, сложно. Но представьте себе это всё на чисто процедурном "С"!

А впрочем, у самого подобное - коду 18 лет, писано одним(!) программистом, который недавно уволился и пока не найдем ему замену - фактически остался в одиночестве, но я - ещё и директор ваще-то. И вот если бы не идеально, рассово верный ООП - легло бы это все давным-давно. А так, сопровождать код вполне достаточно моего свободного времени. У нас лучше - код документирован на отлично, поэтому не надо лазить по 3 часа, есть описание "общей архитектуры", взаимосвязей, модулей, задумок и внесенных изменений - типа "Википедии", есть ещё и мантисс с хорошо документированным кругом задач.

> Перед програмистом теперь не стоит задачи видеть "внутренним зрением" во что превратится его код в машине.
> А если это кластер? а если часть вычислений уйдут на видеопроцессор, а часть вообще в аутсорс в сеть?
> Тебе не нужно этого знать. Так развивается вычислительная техника.
> Вебовцы уже привыкли к такому, пора и нам. Веб разработчик часто не знает на какой машине будет выполниться его код,
> часть разные части скриптов могут выполняться на разных точках и потом собраться и окончательно отрендерится в браузере.
> Даже роутинг уже может исполняться на клиенте частично.

Аналогично верно, но к вопросу не относится. ООП сам по себе плохо поддерживает кластерные и параллельные вычисления, но это иной вопрос, обсуждать не стоит, можно далеко уйти в сторону.

> Ты просто хочешь застрять на пороге. Времена, когда ООП код терял часть эффективности за счет избыточной
> косвенности - почти прошли. Оптимизатор выкинет ненужные уровни. Не эта версия, так следующая.
> Если ты хочешь кодить не на PDP-11, то мысли шире. Производитель чипа сделает чип с гигами памяти,
> автор компилятора использует эти ресурсы, а програмист должен описать алгоритм понятно и удобно.

А вот тут он не просто ошибается или лукавит, а с учетом его знаний - откровенно врет. ООП, тем более "виртуальный" - это многоуровневая и динамическая косвенность, то есть указатель на объект, который создается динамически, имеет собственные и также динамически созданные подобъекты, со своими косвенностями, в метод часто передается указатель на динамический класс (наследование) и .. все это - РАНТАЙМ.
Чтобы оптимизатор смог выкинуть ненужные уровни косвенности он также должен быть в runtime и .. по сути исполнить программу целиком! Если вспомнить Майерса, который собирал статистику использования ПО и его утверждение что 85% программ пишутся однократно, то .. ну Вы понимаете где и как тут наврано с три короба.

Ну и ещё:
 

>Нет задачи писать с ООП или без него. Люди просто решают задачи. Кто с ООП, кто - без.
> Это не "линия партии", нет правильного и неправильного пути. Неправильно только отказываться от инструмента "из принципа".
> Тебе говорят: не хочешь не используй.
> Ты говоришь: кто использует - дурак ;))
> Разницу понимаешь?

Это он написал не Вам. Это было мне. :)
1. Да, нет такой "задачи" - верно. Только на том форуме есть кучка идиотов, которые активно НАСАЖДАЮТ в т.ч. и в примерах ООП в МК и Ардуино. В том числе и обучая студентов.
2. Просто было бы верно без комментариев, если бы не п.1.
3. Не так. Вам всем говорят "надо использовать ООП", пусть хотя бы и косвенно: весь Wiring - это ООП в МК, что само по себе дурь несусветная.
4. Это не ты говоришь, а я говорю. :) Ты - спрашиваешь, в т.ч. и у меня.

Причем говорю это активно и публично: тот, кто использует ООП в микроконтроллере и тем более в Ардуино - ДУРАК и ПОЛНЫЙ. Это как лакмус на дурака, не более. :)

Обоснование:
 

Когда-то, кажись в 89-м, на конференции в Севастополе, я представлял свою оконную систему вывода на Писюк (не помню, была тогда в СССР винда или ещё нет), писанную на его Асме целиком и уложившуюся в 16кб "всего". Вот как раз в памяти осталась, после моего доклада, жаркая дискуссия о

"Кто должен делать проверку входных параметров: функция или вызывающий контекст?"

Там было жарко, приводилось много аргументов "за" и "против" .. Так вот, хорошо помню как все единогласно пришли (и аргументированно) к итогу: проверку параметров обязан делать вызывающий контекст. Функция, метод и пр. должны ДОВЕРЯТЬ вызывателю и считать вход - верным.

.. позже, вернувшись в ИТ, я обнаружил т.н. "паттерны проектирования для начинающих", и в т.ч. паттерн MVC - где как рекомендация новичкам содержится как раз это утверждение: контроллер обязан проверять входы и вызывать модель с правильными параметрами. Вид - то, что занимается выходом и его форматированием.

А теперь трам-парам, следите за пальцами:
ООП - это "инкапсуляция", каждый класс содержит в себе методы работы со своими объектами. модификатор private так и вообще запрещает внешний доступ к полям объекта. Сеттер - метод, изменяющий свойство объекта И ПРОВЕРЯЮЩИЙ правильность входа! Более того, есть ещё и полиморфизм, где каждый сеттер может проверять свой диапазон верности входа!

Налицо противоречие с выщеизложенным. Собственно это то, о чем статья, найденная Вами. Оптимизация ПО входит в прямое противоречие с "технологией программиста", то есть это технология как писать плохой код. Что и требовалось обосновать.

И таких противоречий - несколько, перечитайте статью и доизучите английский все же. В частности, борьба со сложностью лучше проходит на понятии "модуль", чем "класс".

Но .. wdrakula - прав: "не нравится - не ешь". Только Вас никто на работу не возьмет, поскольку каждый работодатель (и я в т.ч.!) знает: что программист не работающий в парадигме ООП - нафиг никому не нужен. :)

И даже мне, вот пофиг, что это вредная парадигма. Просто надо называть вещи своими именами, а не прятать голову в песок "модно/немодно", и это ВОВСЕ НЕ ЗНАЧИТ что от ООП надо отказываться. Вот такой каламбур.

--
С уважением, Владимир.

/ТЕКСТ ПИСЬМА

P.S. Спасибо всем, кто отвечал по делу. Тему можно считать закрытой. У меня есть ещё один больной вопрос, который не дает мне покоя, но для него заведу наверное отдельную тему и позже. Пока не готов.

sadman41
Онлайн
Зарегистрирован: 19.10.2016

Beginer123 пишет:

Мне кажется что я понял Вас обоих и свой вывод сделал: ... В общем как и любой инструмент применяться должен с умом...

Кем, говорите, работаете и скоко лет?

Logik
Offline
Зарегистрирован: 05.08.2014

wdrakula пишет:

 Так и код - оставь эффективность оптимизатору, он лучше разберется. (хоть Логик и против ;)))) )

Я не против того чтоб оптимизатор лучше разбирался и даже очень за то чтоб " Эффективность кода должен обеспечить компилятор." Луче даже если ТЗ сам прочтет и сразу эффективно все напишет. А я на рыбалку. Свое я уже похоже заработал;) Но увы реальность такова.

1. На данный момент человек пишет код ручками и код выходит оптимальней чем у машины. Разумеется при наличии квалификации. 

2. Оптимизатор с компилятором не может принимать решения по алгоритму, и структуре данных, а это основные ресурсы эффективности кода. 

3. Скорей всего п.1 и п.2 навсегда. Минимум до появления ИИ ;)

Так что не надо маниловщины. Вместо программера никто думать не будет.

Про ООП. Да инструмент (и это уже очень хороший консенсус, не так давно орали - "мир в обектах" и "все на ООП" ). Как у любого инструмента должна быть область применения - ну то, где инструмент дает лучший результат чем другие. Для МК как правило лучше без ООП (на глаз, ну так в 90% случаев). Для ПК - от задачи зависит, ну пусть будет 50/50. По статье - мысли не пустые, и не надо их воспринимать как боевые действия. Это скорей отходняк "послевчерашнего" увлечения ООП ))) Чтото типа "нафигажестокапитьбыло" ))

Про джаву без утечек памяти - ага, щас! Из реальности. Дважды в сутки админ ребутит сервер с гласфишем. Память заканчивается. Все на джаве. Куда девается память - так распределяется и не используется. Но и не освобождается. Сборщик мусора бессилен. Причины - скажете код кривой. Да кривой. А че он кривой - а потому что разрабов на джаве учат не думать о такой "фигне", как память. Вот почему логика "оставь эффективность оптимизатору, он лучше разберется" вредна. Вместо программера никто думать не будет.

Про фастлед - очень удачно зацепили. Либа как либа. Отсылает байты в ленту. Но не знает что лента "терпит" паузы между байтами адресоваными разным светодиодам. Небольшие, в пару мксек. Т.е. отправил RGB пауза, снова RGB в следующий светодиод и пауза.. Ну а че толку в этих паузах? А то что можна расчитать цвет следующего светодиода. Результат - фастлед выводит "радугу" на ленту сколько ОЗУ хватит, а я - произвольной длины без расхода ОЗУ. Вот живой пример сравнения эффективности ))) Какй оптимизатор сможет? Мал тогог, даже фастлед доковыряют, но пара мксек - очень мало, десятки команд всего, там надо быть очень, очень эффективным.

Ворота
Ворота аватар
Онлайн
Зарегистрирован: 10.01.2016

b707 пишет:

нафига его переубеждать? 

Переубеждать Архата - дело абсолютно бесполезное. Если человек на голубом глазу пишет 

#define TSC_PERIOD      (1000/1024)

и потом, вместо того чтобы исправить опечатку, начинает до усёру доказывать, что "прав, только вот скобки убрать надо", переубедить его может только могила.

Он и сейчас прав. Смотри вон сколько понаписал в #58, а мысль-то одна: все дураки (полные) и идиоты - один он - д'Артаньян.

Т.е. ещё раз, переубеждать упёртого, тупого прогера, чья тупость может сравниться разве что с его же безграмотностью - это как свинью стричь. Визга будет много, а шерсти - ноль.

sadman41
Онлайн
Зарегистрирован: 19.10.2016

Logik пишет:
Результат - фастлед выводит "радугу" на ленту сколько ОЗУ хватит, а я - произвольной длины без расхода ОЗУ. Вот живой пример сравнения эффективности )))

Какое смешное передёргивание в стиле ложика: все любители на лыжах бегают, подмазывая универсалкой +2..-20, а я, спорцмен, под температуру выбираю мазь и бегу на своих фишерах на 20% быстрее этих офисных крыс. Потомушто мазь у них - гумно, лыжи - отстой и сами они - ...

 

igorkkk
Offline
Зарегистрирован: 19.11.2018

Про ООП я все понял: программирование - это религия. Религиозные фанаты (особенно непризнанные гении, то есть неудачники), как и положено религиозным фанатам, лезут в окно, если в дверь их забанили. 

Logik
Offline
Зарегистрирован: 05.08.2014

sadman41 пишет:

Logik пишет:
Результат - фастлед выводит "радугу" на ленту сколько ОЗУ хватит, а я - произвольной длины без расхода ОЗУ. Вот живой пример сравнения эффективности )))

Какое смешное передёргивание в стиле ложика: все любители на лыжах бегают, подмазывая универсалкой +2..-20, а я, спорцмен, под температуру выбираю мазь и бегу на своих фишерах на 20% быстрее этих офисных крыс. Потомушто мазь у них - гумно, лыжи - отстой и сами они - ...

 

... лошары. Не стесняйся, ты их уже крысами назвал )) А ты демагог и словоблуд. Хотя фишер таки лучше чем вятка, согласен с  этим. Тока какого хрена тут о лыжах. Таки словоблуд. 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Так, ну чо, со злом/добром разобрались?   Тему можно сносить? 

ua6em
ua6em аватар
Онлайн
Зарегистрирован: 17.08.2016

DetSimen пишет:

Так, ну чо, со злом/добром разобрались?   Тему можно сносить? 

не мона, а нуно )))

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Пусь побольше народу выскажеца

sadman41
Онлайн
Зарегистрирован: 19.10.2016

Зачем сносить? Пусть останется для следственных действий. Мало ли какой Beginer666 заведётся ещё.

Ворота
Ворота аватар
Онлайн
Зарегистрирован: 10.01.2016

Так, по-моему, и этого ещё никто не забанил.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Ну, значить, няхай остается тема

Алексей.
Алексей. аватар
Offline
Зарегистрирован: 02.02.2018

DetSimen пишет:
Пусь побольше народу выскажеца
Что-то на хабре в обсуждении этой статьи не видно нИков знакомых, они тут постят что ли?!

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

А можно ссылку на хабр?

Алексей.
Алексей. аватар
Offline
Зарегистрирован: 02.02.2018

Дык онаж в первом посте

Beginer123 пишет:

весь текст в общем-то здесь: https://habr.com/ru/post/451982/

От себя только добавлю - это ровно то, чему меня учил Архат и похоже именно это и стало причиной его тролления тут. Он оказался - прав: ООП не просто зло, и не столько средство распила буджетов программистами, сколько хорошо встроенная в ИТ-отрасль диверсия.

комментировать не буду, не силен в теориях, да и так .. студент, и не самый лучший. Просто на почитать - очень полезно.