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