Ближайшая конференция - Joker 2024, 9 октября (Online), 15-16 октября, Санкт-Петербург - - . . . .
КОМЕНТАРІ: 119
@manapotion15946 років тому
Гайд - как стать спикером на JUGе 1) Берем этот доклад 2) Заменяем слово "объекты" на "рекурсивые функции" 3) В ответ на вопросы пикаем одну из фраз ниже после "Я с вами согласен. Но" - "Объекты не нужны. Стек рекурсивных функций тоже имеет состояние" - "Стандартную библиотеку делали идиоты - зачем делать целый класс Scanner, когда можно было просто написать статик рекурсивную функцию" - "StackOverflowException? Понятный код важнее! Непонятный? А я мыслю по другому!"
@easyCodeRu3 роки тому
Как много людей, которые для вида "изучили" основы ООП и забыли о них в первый же день.
@sergeyturikov33243 роки тому
Ну этож Бугаенко :) У него всегда темы для срача, мне нравится Бугаенко. Если становится скучно на работе я иду в бложик Егора и нахожу срач по душе :)
@fallenangel13953 роки тому
На самом деле, вещи говорит. Это сложно, по сравнению с привычным мышлением, но очень логично.
@user-br4gt7xu2j3 роки тому
это крайне круто в некоторых случаях и крайне неудобно в большинстве иных. У него просто очень мало опыта
@AlexanderBorshak5 місяців тому
А почему в Лиспе нет инкапсуляции? Через замыкание легонько реализуется. Или тут категорический подход, что инкапсуляция - она только в ООП, потому что кто-то сказал что должно быть именно так? А ООП может называться ООП только если оно "классическое"? Причем не в смысле каноничности, а потому что реализовано через классы - и снова потому что кто-то сказал, что должно быть именно так? Если у нас есть объект - в смысле контейнера состояния, и какая-то логика для данных таких контейнеров, то мы и на чистом С можем написать drive(car) - и будет так же понятно, как если на "классическом ООП" написать car.drive(). И это будет ООП на чистом С. Некоторые задачи лучше - то есть проще - решать в императивном стиле. Некоторые - в декларативном. Собственно, с этой целью и создают новые языки программирования - чтобы облегчить использование какого-то стиля или парадигмы; тех, что больше подходят под определенный класс задач, для которых и создавался язык. Остальные парадигмы просто остаются в тени выбранных для языка архитектурных решений - но не запрещены. Обилие паратигм программирования дает отличную вариативность - и можно взять именно то, что лучше подходит под задачу, пускай в каком-то случае это и просто пачка процедур.С другой стороны, любая идея, возведенная в абсолют, выхолащивается в бессмыслицу. Это все равно, как "а давайте молотком забивать только гвозди, и только одной стороной - потому что так в учебнике труда сказано". Хотя вариативность применения даже столь простого инструмента просто безгранична.
@qwertymangames18002 місяці тому
19:50 если хочется по солиду иметь маленькие объекты которые имеют только один метод, то зачем вообще нужны объекты. Можно убрать лишнее и реализовать всё функциями. Добавить туда функции высшего порядка.
@vyacheslavkozlov22073 роки тому
Аж ностальгия накрыла при виде листинга Basic.
@klxqz3 роки тому
Егор просто приколоться решил над местной аудиторией. А они ему и противопоставить толком ничего не могут. Это лишь показывает некомпетентность слушателей
@d9kd9k2 роки тому
вы что противопоставите?
@i2925552 роки тому
Спасибо, Егор, теперь и 1С: Предприятие выходит объектоориентированный)
@judexmars42149 місяців тому
Джокер от мира Java разработки
@Gretanit16 днів тому
Трудно, конечно осознать всю программу, особенно если он будет большая
@user-sz7kt8nf1m3 роки тому
А мне нравится, интуитивно близко
@user-vm7re9bu9r2 роки тому
Интересная мысль
@AlexanderYakimec16 днів тому
А как по мне очень даже интуитивно.
@EdwardNorthwind2 роки тому
Вот если бы не лесенка, то вообще было бы идеально. А с другой стороны, это логично, что лишние телодвижения вызывают больший жор батареи, и чудес не бывает - подобный подход более медленный и требовательный. Даже в этом примере, на одной чаше весов примитивы, что весят копейки, а на другой - 6 классов, со всеми вытекающими.
@maxbykov229Рік тому
Очень понравилось выступление. Особенно аргументы всех сторон. Поддерживаю подход Егора, вижу в этом много смысла. И Android действительно трэш.
@GrzegorzBrz380Рік тому
Напомнило иерархию виджетов во Flutter
@user-tk2jy8xr8b3 роки тому
Опоздал с комментарием на три года, но... Лесенка в ООП - это пережиток порграммирования текстом, объекты надо композировать в пространстве, возможно даже в трёхмерном (а то и больше, но зачем?). Тогда и программа будет не текстовая, а объектная. Видео оставляет некоторые вопросы, тема раскрыта недостаточно. Замечательно, всё скомпозировалось. Теперь, как внутри всего этого великолепия описываются условные конструкции, циклы и рекурсия? Построением, по сути, аналога AST в явном виде, как в блок-схемах? Какие примитивы делают чистый ООП язык тьюринг-полным? Чистое ООП не предполагает параметрический полиморфизм (это заимствование из мира ФП) - что предлагается в статическом стротипизированном ООП-чистом языке на замену?
@user-lk1fw1lp8b2 роки тому
Не могли бы вы подробнее рассказать о композиции объектов в пространстве? Как вы это себе представляете?
@user-tk2jy8xr8b2 роки тому
@@user-lk1fw1lp8b как объекты реального мира композируются в пространстве?
@user-lk1fw1lp8b2 роки тому
@@user-tk2jy8xr8b позиционированием друг относительно друга. Но как этим можно что-то запрограммировать?
@user-tk2jy8xr8b2 роки тому
@@user-lk1fw1lp8b так же, как собирают логические схемы из NAND элементов
@user-lk1fw1lp8b2 роки тому
@@user-tk2jy8xr8b мне кажется, проще писать код, чем в реальном мире собирать что-то. Хотя идея безусловно нова.
@vanyasotnikoff60242 роки тому
Все проблемы начинаются со слова "должен". Статиков не ДОЛЖНО быть, классы ДОЛЖНЫ быть маленькими, все ДОЛЖНО быть объектом и так далее.
@kobensky9 місяців тому
мне кажется, что "должен" Егор употребляет в качестве "укрепления" своей теории. То есть не "кто-то что-то ему должен", а "должно быть так, что бы его теория не развалилась".
@iamdozerq9 місяців тому
@@kobensky Ну да, он говорит что что бы было ооп ДОЛЖНО быть так. если не так, то не ооп. ООП это та самая постоянно разваливающаяся статическими классами теория.
@dmitriypronichev70483 роки тому
завидую прям коллегам, которые удостоились чести работать с таким классным инженером. И на самом деле, спринг не нужОн нам. Главное Евгению Борисову об этом не рассказывать )
@alexkluev561Рік тому
шутки шутками, а вот для GraalVM в том же спринге сейчас никто не гнушается писать ручками конфигурации бинов. Ну и DI через конструктор завезли, за это отдельный респект.
@StonksMaster12 роки тому
А потом GC тормозит приложение на сутки чтобы очистить эти все объекты 😀
@user-lk1fw1lp8b3 місяці тому
Так это проблема GC и языка, а не подхода. Да, это по определению бвдет медленней императивщины, но насколько? Если брать именно таклй подход и положить его в основу языка, думаю, вполне можно создать что-то приемлемое по скорости
@alekseyshibayev5243Рік тому
После этого ролика, становится понятно, почему Егора Бугаенко так тролят.
@dmitryduzhinsky27392 місяці тому
Скорее он профессиональный тролль
@alekseyshibayev52432 місяці тому
@@dmitryduzhinsky2739 я раньше тоже так думал, но когда перестал использовать солид и паттерны только на собеседованиях, и начал применять их в бою, и начало получаться писать СОЛИДно - начал понимать Егора Бугаенко.
@em_the_bee2 роки тому
23:38 Crystal lang!
@alexkazimir38352 роки тому
В итоге lisp/clojure получается :-)
@lvn56093 роки тому
Вся шутка в том что код на Бейсике короче и лучше читается.
@SplashDmg20113 роки тому
ну наверное потому что Java существует для более сложных программ)
@iamdozerq9 місяців тому
Код который он дал в конце читается в 10 раз проще. Он помещается в голове, он супер понятный и логичный. Я как человек с дислексией на числа и с отличным объемным воспроиятием(связанные вещи, кстати) - не просто читаю его код а вижу его весь одновременно в объеме, а там вообще то аж 6 объектов. В оригинальном коде объемных прикладных "объектов" сильно больше. Цикл, сравнения, сами переменные, поведение при разных ситуациях, скобки даже у этого всего - это абстракции которые мозгу чего то стоят. Старый код нужно интерпретировать по пути, забывая сами выражения, запоминая результат. В новом коде сразу просто запоминаешь возможные состояния. Это принципиально другое мышление.
@ThisRussia3 роки тому
14:40 вопрос задал Тагир?)
@teklamaili80932 роки тому
Да
@kirillsh83833 роки тому
все проблемы решены в котлины экстеншинами =)
@ChannelCheesecakeРік тому
2023 год. Scala. ZIO. Все так и пишут. Мужик опережал время
@solomonsamsonovich4 роки тому
у нас такой говнокод не прошел бы стадии ревью
@ihateidiots94843 роки тому
Удачи с дебагом этой матрёшки
@ihateidiots94843 роки тому
@@igojira835 а вы всерьез считаете, что модульные тесты - панацея со 100% покрытием всех возможных ситуаций? И что они страхуют от всех типов багов вплоть до гайзенбагов / баггзонов Хиггса?
@ihateidiots94843 роки тому
@@igojira835 На практике у матрёшки попробуй ещё 100% покрой каждый слой + чтобы покрыть 100% этого хлама, нужно написать в 4-5 раз больше кода, а то и больше. И как-только решите изменить хоть чуть-чуть один слой в результате рефакторинга - придется переписывать огромное количество зависимых классов и тестов (а в матрёшке их ой как много). Это долго, муторно, дорого и утомительно. Плюс из-за того, что в матрёшке очень много делегирования между слоями, удачи с рефакторингом из-за оверинжениринга
@ihateidiots94843 роки тому
@@igojira835 эээ нее, не просто класс, в котором что-то не так, а декораторы декораторов среди слоев матрешки...вот тут и начнется жесть, так как до кода, обрабатывающего файл, нужно ещё добраться сквозь дебри обернутых обёрток
@ihateidiots94843 роки тому
@@igojira835 так это как раз то, что автор ролика чудит
@ihateidiots94843 роки тому
@@igojira835 вы точно видео смотрели? Внимательно?
@Yes.Im.Mr.Anderson4 роки тому
Боже храни питон!
@TheRebeled6 років тому
Видео обрывается неожиданно. Все таки дошло до мордобоя?
@dmitriypronichev70483 роки тому
да не, просто обиженный на джаву человек, ради чего он будет драться? )))
@vr296455 років тому
Народ хочет процедурного программирования, он на нем и пишет. А ООП для них просто звучит солидно, вот они этот термин и используют
@Nonroya6 років тому
Напоминает скорее ФП, только зачем-то объекты вместо функций, в итоге код читать трудно. Объектов посылающих друг другу сообщения не заметил. Мой тимлид любит повторять "Любую проблему можно решить внеся еще один слой абстракции, кроме проблемы большого количества слоев абстракций".
@heck_fy4 роки тому
@@aammssaamm у него объекты всё-таки имеют обычно несколько методов, т.е. в своей книге в первом томе он об этом пишет по крайней мере, т.е. он использует не только конструкторы, но и результаты конструкторов - объекты, вызывая их методы. здесь это не показано, но это ключевое отличие, как я его (Егора) понимаю
@xelaksal66906 років тому
Человек открыт к диалогу и это подкупает, но собеседников явно не хватает.
@user-tf8ff2od6g4 роки тому
Единственный нормальный коммент) Когда нечего аргументировать вникшему человеку, остается его хейтить.
@eugenex88925 років тому
На самом деле когда видишь цель может даже и проще... Но вот тут-же вспомнился Magento который использует именно такой подход, это просто убойный удар по любому CPU... Заканчивается это обычно тем что есть дохрена классов и вместо 100 строчек кода тебе надо искать какой-то там класс...
@user-ex7eb6py6k2 роки тому
Кстати, в конце выступления будет вопрос про производительность. И Егор ответит, что в таком случае можно профайлить классы, и самые критичные места заменить, на статик методы. Приходиться всё таки идти на компромис)
@user-jk6yr5qj4o5 років тому
По историческим причинам программисты склонны даже в ООП-стиле писать процедурную кашу. Если воспринимать видео в качестве прививки от этой болезни - интересно. Хотя, конечно, слепое следование парадигме - тоже болезнь.
@user-vl4zr6py9s4 роки тому
Плюсую многократно! 👍
@Anatoly5554 роки тому
Программист - это вообще болезнь ;)
@antonbandarchyk41984 роки тому
автор решает задачу написать полностью на ООП а не написать понятный читаемый код. Не всегда эти 2 задачи совпадают.
@izebit6 років тому
Функция принимающая на вход данные и возвращающая данные не изменяя состояние - плохо o_0 С каких это пор использование pure functions стало дурным тоном?)
@vancheloChanel4 роки тому
Тоже интересует этот вопрос
@andrei40203 роки тому
Очень поздно отвечаю, но, на мой взгляд, дурной тон в том, что в Java, в принципе, не существует функций. Есть только методы. Чистота все-таки ближе к функциональному программированию и ваше высказывание выше несколько некорректно к данной теме. Возможно, что я и ошибаюсь.
@isey28513 роки тому
@@andrei4020 Статики были придуманы для избранных
@valerylukin84463 роки тому
Я думаю докладчик имеет ввиду частое использование статических методов. Я видел в куче проектов огромные util классы которые принимали в себя кучу аргументов и порой даже зависимости которые должны были инжектится бы. Тоже самое про вынесение логики в приватный метод и потом огромный класс у которого один метод типа execute() и удачи потом писать тесты на такой метод который в итоге вызывает 100500 приватных методов.
@jojomajo2 роки тому
ВОт только не просто данные, а только функции. Огромная разница
@gtbutcher3794 роки тому
Отлично пояснил за чистое ООП. Улыбнул вопрос про "переучить людей на новый лад", вообщето знание ООП для большинства программистов как бы обязательная компетенция в наши дни.
@TheFuckel3 роки тому
Только это знание проверяется просьбой перечислить 4 принципа
@alexkluev561Рік тому
На одном из собеседований в начале карьеры как обычно спросили, что такое ООП. А потом спросили, где я пишу бизнес-логику. Ну я конечно ответил, что в сервисах. А потом интервьювер спросил, где в сервисе соблюдаются принципы ООП и тут я замялся :)
@antonkuranov6 років тому
Тут ничего нового нет. Фреймворки автоматизируют сборку "матрешки" посредством паттернов Dependency Injection, IoC или ServiceLocator. Это единственное отличие от того, что предлагает Егор. Для более сложных приложений, особенно клиентских, "матрешка" Егора превратится в месиво.
@acidelk4 роки тому
Название переменных - топчик. Integer - final class. Тут парень его реализует как интерфейс. После фразы: "Сейчас я пишу на java" - это очень странное поведение.
@writetoyourdestinyРік тому
Ничего странно, реализация интерфейса Integer говорит о том, что где-то в программе создан такой интерфейс. Здесь речь не о стандартном java.lang.Integer классе.
@ardarchic6 років тому
Самый странный доклад, который я видел...
@Gibsonen6 років тому
этот странный человек написал свой ооп язык)
@----12816 років тому
Хочется выкинуть эту объектную дрянь и оставить простой и понятный бейсик ) А если серьезно, то тут лукавство во всем: и код на объектах не короче (если добавить все классы, получится втрое длиннее), и поддерживать такое сложнее, чтобы понять что происходит, надо просмотреть все классы. Да и вообще выглядит как троллинг.
@user-ti1nq3uf5l6 років тому
Не хотел бы я дебажить код этого товарища))
@ruslanshvarev97285 років тому
почему вы говорите, что надеетесь, "... что появляться будут языки и платформы..." так уже есть декларативные языки Lisp, Prolog
@MrRomanvideo3 роки тому
Lisp не обьектно ориентированный
@alexanderabakumov804 роки тому
что-то в этом есть
@Alexander-mj3jk6 років тому
Просто это как с живописью: всем надоели традиционные стили, и люди начали придумывать всякие супрематизмы, сюрреализмы, кубизмы, перформансы и инсталляции, и прочие штуки. Это ново, привлекает внимание, люди про это говорят, художник получает заряд положительной энергии.
@FrolOFF1003 роки тому
Жаль конечно, что так несвоевременно сюда зашёл, но всё же хочу отметить, что всё то, что нас сегодня окружает, выглядит так во многом благодаря таким глупостям как эти вот кубизмы и супрематизмы. Само понятие дизайна как таковое своим появлением обязано этим концепциям. Так что может и из концепции Егора в итоге вырастет что-то правильное.
@Alexander-mj3jk3 роки тому
@@FrolOFF100 а я и не утверждал, что это плохо. И вообще, сегодняшний мир построен из войн, которые начинать изначально было глупо.
@ivanaaa60495 років тому
У погромистов подгорает! :) Я бы только программу оформил иначе: с промежуточными переменными, которые бы передавал для создания новых объектов и шел бы с конца (а то получилось в функциональном стиле). Тогда программа была бы плоской, но ООП.
@stivstivsti6 років тому
даже на it конференции должен быть городской сумасшедший
@fffsjkfbrutireer5 років тому
Согласен полностью с тем, что основное это человекопонятныйкод, но х3 будет ли с этой концепцией ясность и простота это вопрос
@volodymyr.kushnir6 років тому
imho: из одной крайности в другую. Видимо автор довго кодил на C и в какой-то момент решил перевернуть все с ног на голову. p.s. вместо тысячи слов - "show me the code"
@ivanaaa60495 років тому
А вот как код выглядит при наличии set-еров и get-еров: ukposts.info/have/v-deo/g6JeYZp-gXemymg.html
@DanyloSyrotynskyy5 років тому
Слева у нас удобочитаемый алгоритм а справа у нас алгоритм разнесенный на части по разным классам, а следовательно не целостный и в перспективе поломанный. Лекция называеться - как испортить работающий код с помощью ООП
@iozhukau5 років тому
И вот из-за таких фанатиков Скайп пол дня открывается
@lucifer-look-Рік тому
Я написал игровой 2д движок с нуля на Java на таких принципах ООП. У него есть и скелетная анимация, и физика. И даже на очень старых устройствах он работает быстро и требует всего 100 мегабайт кучи. Собирается под винду, линукс, андроид. Так что низкая производительность - это как раз про плохой дизайн кода. Код с хорошим дизайном - это всегда путь к высокой производительности.
@dmitriykonopinskiy3793Рік тому
@@lucifer-look- где можно код посмотреть?
@lucifer-look-Рік тому
@@dmitriykonopinskiy3793 ютуб удаляет комментарии с ссылками. Напиши мне на почту. Она есть в описании моего "канала". В ответ скину ссылку на проект
@alexfray72976 років тому
Старый доклад
@platonelenin5 років тому
У Егора ООП головного мозга.
@POWERon4ik5 років тому
Знаете что самое страшное? На этом видео 2/3 лайков...
@dmitriypronichev70483 роки тому
меня вот это тоже пугает. Понятно, что слева у спикера эталонно плохой код, но вот то, что справа - считать хорошим?! А вот сколько джунов потом начнет такой же фигней страдать... С другой стороны со временем понимаешь, что без работы точно не останешься... )))
@MikhailKolesnikov5 років тому
В жаве есть метки, практически гото.
@TheNeomer5 років тому
ооп головного мозга (с)
@chillout19435 років тому
абсурд
@MrAdeptius6 років тому
Прогер, обиженный на весь мир. Ему всё не нравится... Только посмотрите заголовки его видео "utility нас убивают", "обьектно-ориентированное враньё", "ORM - это обитно"... Противно слушать все его недовольства. Не нравится ЯП - не пиши.
@user-jk6yr5qj4o5 років тому
Ну ты же посмотрел - значит, работает. Не нравится видео - не смотри.
@user-vl4zr6py9s4 роки тому
Он вообще не говорит ничего про нравится или нет. С опытом он для себя выработал другой подход и пришел у выводу, что этот подход эффективнее. Делится этим. Причем здесь обиды или что не нравится яп...