![magla](/img/default-banner.jpg)
- Видео 32
- Просмотров 387 683
magla
Украина
Добавлен 11 янв 2013
Технологии. Звук. Игры. Разное.
Ответы на вопросы ролика "Вся суть ООП на примере Factorio"
00:00:00 - Вступление
00:04:50 - но ведь в примере в конце нарушен по сути базовый приинцип "Don't repeat yourself". причем настолько грубо, насколько это вообще возможно )) а так игра великолепна )
00:08:05 - Как ни странно, но объяснение из вики о том, что "всё должно быть на объектах" гораздо точнее описывает суть ооп чем остальные 99% этого ролика.
00:09:14 - а можно играть на "микросервисной архитектуре", на так назывемых сити блоках. каждый ситиблок это территория, огражденная железной дорогой, например квадратики 100 на 100 рельм. ...
00:12:04 - Честно говоря... это полный бред. Принципы ООП ложатся на данный пример из факторио не "удивительно хорошо", а чертовски криво и при...
00:04:50 - но ведь в примере в конце нарушен по сути базовый приинцип "Don't repeat yourself". причем настолько грубо, насколько это вообще возможно )) а так игра великолепна )
00:08:05 - Как ни странно, но объяснение из вики о том, что "всё должно быть на объектах" гораздо точнее описывает суть ооп чем остальные 99% этого ролика.
00:09:14 - а можно играть на "микросервисной архитектуре", на так назывемых сити блоках. каждый ситиблок это территория, огражденная железной дорогой, например квадратики 100 на 100 рельм. ...
00:12:04 - Честно говоря... это полный бред. Принципы ООП ложатся на данный пример из факторио не "удивительно хорошо", а чертовски криво и при...
Просмотров: 829
Видео
Суть Объектно Ориентированного Программирования на примере Factorio
Просмотров 75 тыс.3 года назад
#ООП #программирование #factorio
among us - идеальный убийца (by SmiT)
Просмотров 1523 года назад
among us - идеальный убийца (by SmiT)
Sakura moon w12 (Total restore in 6 min)
Просмотров 1003 года назад
Sakura moon w12 (Total restore in 6 min)
Car Mechanic Simulator 2015 - Sakura GT20 Drag V8
Просмотров 1103 года назад
Car Mechanic Simulator 2015 - Sakura GT20 Drag V8
Держи сдачу 2!
Просмотров 11610 лет назад
Пытаюсь методично ковырнуть семерку. В этот момент без засвета в бок влетает плюха от вафли, стирая остатки свеже нанесенной краски на корпус моего любимого е50. Мы ей это дело не прощаем! Забываем про бедную семерку и начинаем вычислять откуда прилетела плюха вафли. Принюхиваемся... Определяем направление... Поправка на ветер, и-и-и-и.....
E50 MASTER
Просмотров 9910 лет назад
Катался пол года на е50, и вот только сейчас получил мастера. Объясню пару моментов. Я смотался с горы, поскольку дело явно пахло керосином. Там в подавляющем большинстве противники тупо нас раздавили бы. Я решил, что более эффективно будет не держать эту позицию, а попытался зайди врагам в тыл, собственно, что и сделал. Ссылка на рэплэй. wotreplays.ru/site/1966565#zimniy_himmel_sdorf-cj_smit-e-50
Kerbal Space Program (KSP) Гибридный самолет способный слетать на луну и обратно! СТОК!
Просмотров 1,1 тыс.10 лет назад
Видео по началу лагает из-за перегруза. Через мин 15 будет нормально. Взлетел только с третьего раза. Редактировать видео было лень :-)
WOT как правильно встречать на жемчужной реке (Tiger II, мастер)
Просмотров 6210 лет назад
WOT как правильно встречать на жемчужной реке (Tiger II, мастер)
E50. Мастер?
Просмотров 6610 лет назад
Есть куски с хреновым качеством видео. Это реал запись, а не реплей.
Slon - Lorraine 155 51 (8К дамага, воин)
Просмотров 9211 лет назад
Slon - Lorraine 155 51 (8К дамага, воин)
Хэлкеты в рандоме. Збитие захвата на нулевой секунде (2 vs 5)
Просмотров 6611 лет назад
Хэлкеты в рандоме. Збитие захвата на нулевой секунде (2 vs 5)
Feel like ninja (удобное местечко для хэлкета на ласвиле)
Просмотров 7411 лет назад
Feel like ninja (удобное местечко для хэлкета на ласвиле)
Хэлкеты в рандоме. 8 фрагов (на взвод 11)
Просмотров 4011 лет назад
Хэлкеты в рандоме. 8 фрагов (на взвод 11)
WOT Т49 vs СУ26 (должен остаться только один)
Просмотров 13411 лет назад
WOT Т49 vs СУ26 (должен остаться только один)
30:21 Полностью согласен с автором.
Потому что Yagni. Если заглядывать под капот маленьким проектам то там либо какой-то мощный фрейморк или ядро, где по сути все ООП уже написано, а программист просто создает готовые экземпляры готовых классов и пользуется готовыми методами, не раскрывая и 20% фреймоврка с которым работает, потому что в его целях это просто не нужно. На гитхабе очень сложно найти репы написанные с 0 для какой-то коммерции, так как они все закрыты. Честно говоря об ООП парадигме, она просто во многих случаях не нужна и раздувает твой код.
думаю кого мне напопинает этож Агент смит из матрицы если прищурить глаза
Прекрасный актёр на главную роль для фильма Чернокнижник 4.
Окстись, ты не Фёдор😂
Это неправильный Фёдор и вообще не тот
Чел-пили еще контент! Очень заходит.
короче надо срочно факторио пройти чтобы познать ООП
Уровень прям рофессиональный! Продолжайте в том же темпе. Хочу вам подкинуть ютифай - поможет подписчиков привлечь.
Честно, вот уж приятно видеть ответы на вопросы. Хотелось бы продолжение блога
Ситиблок с точки зрения программирования, кажется лучше назвать интерфейсом или абстрактным классом (зависит от того, нужны ли нам состояния и их контроль). Попробуем представить его (абстрактной) фабрикой ресурса(ов), которая: 1. Может принимать на вход ресурсы [A, B, C, ...] -> МОЖЕТ иметь станцию(станции) загрузки. 2. Имеет станцию (станции) для отгрузки ресурсов [X, Y, Z, ...]. 3. Подключено к электрической сети. И многое - многое другое, что лучше опустить для простоты. (Различные опциональные абстрактные (или не очень) методы, например, *текущей выработки* - считаем количество ресурсов, которое проходит по конвеерам в сторону разгрузки. Можем так же хранить информацию о имеющихся ресурсах и иметь связанные с этим методы. Например, при недостаче отправлять сигнал о необходимости поставок или при переполнении определять блок, как приоритетный для загрузки производимого ресурса. (Отдельный интерфейс - Композиция, наследник данного интерфейса - Наследование. Оба способа имеют право на жизнь. Зависит от языка, задачи, ситуации и, в некоторых случаях, даже от настроения и половой ориентации.) 4. Абстрактный метод produce: produce: *args -> BaseResourceType Внутри у нас происходит неинтересная, конкретная бизнес магия(логика), где мы можем из мух и суп варить, и котлеты лепить... Пример ситиблока поставляющего Уран: Для UranMinerCityBlock(CityBlock) produce: [acid: SulfuricAcid, energy: ElectricalEnergy] -> Uran А теперь возьмёмся за полиморфизм: *Опустим детали возни с углём и возьмем стразу Т3 печи, работающие на электричестве, т.к. в нашем процессе они ничего не меняют* Какие различия между ситиблоками для получения Железной/Медной пластины, Кирпича или Стали? Подаваемый и получаемый ресурс. Зачем нам 4 отдельных класса различия которых только в связке типов данных? Если нам платят не за строчки кода - не за чем. Следовательно, мы можем вместо 4-х конкретных классов (IronSmelterCityBlock, CooperSmelterCityBlock, BrickSmelterCityBlock, SteelSmelterCityBlock) создать один класс SmelterCityBlock, в produce которого возможно подать объект, подписанный на интерфейс MeltStrategy (CooperOre, IronOre, Stone, IronPlate). Наша магия полиморфизма, в данной ситуации в том, что нам не важно что мы плавим, мы получим единственный возможный для конкретного класса результат.(Паттерн стратегия) Да, очень много пробелов, как в ваших, так и в моих рассуждениях. Это, в первую очередь, связано с "кусочным" подходом, не позволяющим собрать общую, целую картину "идеальной архитектуры", которой в реализации, если и есть, то очень мало. ООП именно про модульность и самодостаточность компонентов, которые можно использовать и при необходимости изменять (чаще всего пока пользователь не видит, чем иногда повергать его в шок), а паттерны о принятых подходах (в свою очередь о том, как не повергать его в шок). З.Ы. По поводу стыда, это хорошо. Это говорит о том, что за это время имел место быть рост знаний, опыта и навыков :) А на счёт отсутствия продолжения для данного формата - жаль. Лучшего способа объяснения абстракции, чем подкрепить, через реализацию - ещё не придумали, а стандартные урезанные до одного понятия примеры в полном вакууме - не всегда показательны именно для понимания: "как это использовать в жизни". Стандартные примеры с Эмплоями в отрыве от контекста и создают людей, знающих термин, но не понимающих, как это правильно использовать
Даже я оставил комментарий под тем крутым видео
Я посмотрел от начала и до конца, ни о чем не жалею
Очень интересно слушать, надеюсь, это видео стрельнёт так же, как предыдущее.
Один из видов полиморфизма -- перегрузка методов в нескольких формах, с разными аргументами и разной реализацией. В Факторио можно было бы хорошо это показать, вот несколько вариантов полиморфизма: 1. Один и тот же модуль даёт разные продукты в зависимости от поступивших аргументов. В этом видео, например, можно подавать в модуль медь и железо и получать первые (зелёные) платы, а если добавить нефть -- получатся уже вторые и третьи (красные и синие) платы. Хоть в начале на этот модуль потратишь больше ресурсов, но после появления нефти он без перестройки будет выполнять доп. функционал. В Факторио это невыгодно, а в программировании лишние строки кода есть не просят :) 2. Плавильный цех может выполнять одну функцию, но быть построен из печей разного вида. Имеем разные формы (реализации) класса, выполняющие одну функцию.
При объяснении ООП всегда рассматривают 3 либо 4 принципа. Но почему-то мало где говорят, в чём вообще смысл слов "объектно-ориентированное", в чём выражается та самая "ориентированность на объекты". Есть ёмкая фраза насчёт этого, и насчёт инкапсуляции в частности. Звучит примерно так: "объединение данных и методов работы с ними". Т.е. всё, что можно делать с данными (методы, функции, операторы), описаны в одном месте (классе) с этими данными. Правда, как это переложить на Факторио -- не знаю :)
Полиморфизм вообще мимо, по-моему. Появился ролик, который чётко раскладывает принципы ООП по полочкам Факторио, насколько это возможно. "Парадигма ООП в Factorio, или как натянуть сову на глобус": ruclips.net/video/N8Q9TwwsVcI/видео.html Хотя и там я не со всем согласен.
Честно говоря, я руду переплавляю в плиты прямо у месторождений. А на сборщики подаю плиты с поездов, через конвейеры. Иногда даже второй передел (плиты в проволоку) делаю у рудника, а поездами развожу. Но ролик всё равно хорош!
Вся суть ООП в том, что вы пишите код, который работает с абстракциями, а не напрямую с данными. Классы это шаблоны объектов, поэтому вы можете указать, что вы передаёте не некий объект, а объект соответствующий определённому шаблону. Ну и нужно понимать, что приложение это уже объект и невозможно написать программу, которая бы полностью была написана на ООП, всегда будет какаято часть императивного кожа, включая программные объекты. Завод в факторио никак не объясняет ООП, это просто работающая программа, каждый заводик это объект, а абстракции автор предлагает держать в голове, ну это не ООП подход.
Блин, даже за 2 года всего 676подписчиков, у тебя отличный контент, желаю дальнейшего развития канала и продвижения контента ютубом.
За волосы охота его оттаскать. Так долго и нудно рассказывает
Тюбик, за базаром следи
Спасибо🤝 Пожалуй вы 1 человек в ютьюбе кто рассказал об ООП понятно. Как говорится кто ясно мыслит тот ясно говорит.
10:16 ну вот неужели так сложно было ровно выложить рассыпку?
Разбор сути этого видоса от Ляпина просто огонь "ёпта"
Видимо чтобы понять надо тоже накуриться
Я может процента три понял из этого видео. До смешного просто))))
Это было что? Реклама малобюджетной игры?
Оп обесценивает стоимость работ поэтому про него и не вспоминают
даун
Чё-то нулевое понимание ООП, особенно улыбнуло про отбросить абстракцию. Не смог посмотреть дольше пары минут, хотя как рассказчик автор неплох, жаль пурга.
Пиши комментарии в коде с примерами краткими входящими данными и результатом что на выходе должно быть. И тогда поймет любой программист. Остальное мутные слова с заумными формулировками.
Вам стоит поработать над скоростью речи для видео
очень много много много много воды и пауз. В один рилз или шортз можно все уложит на 1 минуту
Можно еще EventBus построить на примере поездов 😁
Полиморфизм: я не знаю, кто ты, но вот тебе деньги, надеюсь, ты меня не обманешь. Инкапсуляция: когда живешь в однокомнатной и устроил вечеринку. Наследование: бейджик "ламборгини" на тракторе. Вам, конечно, чсв чешется, но то, чем забита ваша голова, и что вы оттуда достаете на собесах - это костыли для кривой архитектуры (к тому же НИКАК не помогающие избегать кривого кода в виде: "земля, копайся").
Спасибо. Очень классное видео, ничего не понял, зато кайфанул от просмотра как работает заводик
Абстракцию нужно смотреть в современном психологическом справочнике. Каждый объект в современном мире мы рассматриваем как абстракцию, т.е. как множество отдельных свойств присущих объекту, которые можно рассматривать по отдельности, с не как какой-то несокрушимый монолит, это по сути и есть абстрактное мышление. Взять например наш любимый автомобиль каждый представит себе конкретный автомобиль, но в абстракции это транспортное средство которое содержит в себе некое бесконечное количество требований лиц которые его эксплуатируют, лиц которые на етом ездят, лиц которые это чинят, лиц которые это строят, лиц которые это разрабатывают, лиц которые... Думаю идею вы поняли и у каждой группы есть своя абстракция об этом объекте которая важная для одной группы и не очень важная для другойдругой и вроде можно рассматривать всё группы свойств объекта по отдельности, но успешным продуктом размышления будет "синергетический продукт" максимально удовлетворяющий всё группы, но при этом это не значит что ето будет удовлетворять всё группы по максимуму...
ООП это именно что удобство понятность и структурированность для любого пользователя чтеца или редактора кода, но никак не оптимальный способ выполнить конкретную задачу. Если у человека есть желание сделать своё "чудо", то ООП не его вариант в 80% случаев.
коэффициенты в механизмах не те но видео неплохое
Мда, Федор объяснил конечно намного лучше, нагляднее, но что главное более подробно из без воды на пол ролика
полиморфизм - это не "выдача объектом всего функционала, что он умеет" полиморфизм - это единообразие обращения с объектами разного типа через один и тот же интерфейс, встроенный в них. механизмы предоставления такого интерфейса могут быть разными, но суть та же: обрабатывать разные объекты одним способом. иными словами, не переобучая рабочий узел работе с разными сущностями, всё-же, получать от него обработку широкого спектра этих сущностей, всего лишь внедрив в них одинаковый интерфейс обращения. так, в реальной жизни, человек может ухватиться за любой поручень или ручку. всё, к чему приделана "рукоятка" в форме изогнутой палки, подходит в качестве удобного интерфейса для руки - двери, рамы окон, поручни, перила, ручки сумок, прорези коробок, рукоятки ножей, оружия, джойстики, рычаги, рули управления транспортом, всё это - полиморфно обрабатываемые человеческой рукой, как универсальным хватателем, объекты. пример из области программирования - это возможность осуществить операцию сложения двух строк, либо двух чисел, либо чего-то ещё, для чего оперделена операция сложения, при помощи бинарного оператора "+". оператор один и тот же, а типы разные, как разнятся и результаты. но вот способ оперирования - один и тот же: два значения на входе и одно на выходе в качестве результата, что составляет интерфейс операции для полиморфной обработки. ну и конечно же, динамический/статический полиморфизм, предоставляемый механизмом наследования, либо реализации интерфейса (набора методов и/или свойств) и позволяющий получать полиморфность по наследству, любо по структурной схожести, предоставляя возможность для объектов реализовывать обращение к себе со стороны других объектов через хорошо известный интерфейс.
Попытка хорошая в правильном направлении Правда мне сразу понятно (программирую больше 10 лет), что Автор не програмист Абстракция это основа проектирования любого ПО впринципе - ты когда создаешь что-то сложнее чем г*вно и палки всегда в голове представляешь какую то абстракцию системы и её модулей, как они взаимодействуют друг с другом. Также за полиморфизм не объяснил ничего толком "Использует весь функционал" - это не полиморфизм друже Поли - много. Морф - форма структура Тоесть с одним и тем же объектом можно взаимодействовать как с разными структурами: Например класс Человек - это животное но с ним можно говорить Тоесть мы можем говорить с объектом человек1 Но также этот самый объект мы можем покормить так как он является Животным (наследуется от класса Животное) Грубо говоря это и есть полиморфизм - мы можем взаимодействовать с человеком как с человеком либо как с животным. Мне кажется в факторио не получится показать полиморфизм - бо скорее всего получится спагетти фабрика :D Но как говорится всё в ваших ногах.
Жалко, что в наше время молодёжь совсем разучилась писать ООП
Шляпа
Это безумно хорошо и наглядно. Даже мотивирует писать именно так.
В полный список идеального ООП входят 9 принципов, и даже не 4
5:00 интересная мысль, спасибо.
Занятно
На волосинке от ангара был. Да, у меня такие случаи и в блице случались, но я ближе к таким апаратам как бабаха , для ваншотов.
Да , были времена когда один в пять раскидывал, и один в три.
Кв2 был хорош и в блице… Когда-то…