Парадигма ООП в Factorio, или как натянуть сову на глобус

  Рет қаралды 39,444

ФёдорЛяпин fed1s Play

ФёдорЛяпин fed1s Play

4 ай бұрын

В последнее время стало модно ходить на всякие курсы и учить погромирование. Для помощи непонимающим приводим в ролике пояснение концепций объедко-ориентированного погромирования на примерах из игры Factorio.
Всё сказанное является частным мнением автора. Всем тем кто несогласен, рекомендую записать свой собственный ролик и сидеть с важным видом на диване, а я его покомментирую.
ПОДПИСАТЬСЯ НА КАНАЛ - goo.gl/fBUPy1
DISCORD: / discord
ТЕЛЕГА: t.me/fed1sPlay
ГРУППА ВКОНТАКТЕ: fed1splay
Прямая поддержка канала и комплименты:
www.donationalerts.ru/r/fed1s
Поддержка на регулярной основе:
boosty.to/fed1splay

Пікірлер: 358
@fed1splay
@fed1splay 4 ай бұрын
Парни. Кого не устраивает вольная трактовка отношений между объектами в вопросах наследования и ассоциации, можете предложить свой вариант, КАК это можно показать через игровые средства, пусть даже это будет точно также притянуто за уши. Только пожалуйста, давайте такие примеры, которые поймёт даже мой кот :) UML схемы прилагать необязательно. Спасибо :)
@seaways404
@seaways404 4 ай бұрын
Сложна, сложна блять! Нихуя не понимаю!
@user-in8hp5vu6h
@user-in8hp5vu6h 4 ай бұрын
ну наследование лучше на примере печки, типа вот обычные печки в них нужно ложить уголь, вот печка получше, она тоже потребляет ресурс и выдаёт результат, но подключается уже проводом, а вообще сложно )
@fed1splay
@fed1splay 4 ай бұрын
Да нет в игре объектов, отвечающих отношению предок-потомок :) Разные тиры объектов - это вариант полиморфизма. Размеченный, и позже расставленный блюпринт - это интерфейс и реализация. Чистого наследования нет. Ближайшая/родственная аналогия - то, что приведено в ролике. Можно было бы вообще эрзац-наследование в форме ассоциаций не рассматривать, но тут в комментах тогда полыхало бы ярче тысячи солнц. Да даже без этого иногда вспыхивает 😂 А я не настолько жесток)
@seaways404
@seaways404 4 ай бұрын
@@fed1splay ты просто понтуешься сложными терминами, признай это.
@MrBkorel
@MrBkorel 4 ай бұрын
@@fed1splay Есть наследование! например у тебя есть сборщик первого тира и ты его апгрейдишь на сборщик второго тира. Все продолжает работать рецепт тот же, но немного быстрее и появляются сокеты для модулей. Или например апгрейд белтов. Как стоял желтый белт/был изогнут - так и стал изогнут новый белт. Унаследовал предыдущие настройки (в т.ч. например фильтрацию или логику) от старого белта
@zhanluka
@zhanluka 4 ай бұрын
Все: что-то там про 8-е марта. Федис: чисто мужицкое пояснение за ООП
@Prizrak_Leonis
@Prizrak_Leonis 4 ай бұрын
Пятница, цифра 8 упала на бок возле дня недели и получилось "ооп"
@steveq1938
@steveq1938 4 ай бұрын
Вот рецепт, как получить новое видео от Федора: 1) Делаем ролик о программировании, в котором несем дичь. 2) Отправляем в обязательные рекомендации Федору. 3) Наслаждаемся новым видосом.
@EgoricNoc
@EgoricNoc 4 ай бұрын
Когда нумеруешь элементы списка с нуля: -да я пограммист-
@olegzorin3911
@olegzorin3911 4 ай бұрын
Просто абстракцию ввели относительно недавно. В далеких 90х у нас было только три пункта 1-3. Так что вполне справедливо, что там 0 ). Для расширения кругозора могу ещё предложить посмотреть на вариацию solid. Не трудно догадаться, что тут аж 5 принципов.
@fed1splay
@fed1splay 4 ай бұрын
Я бы сказал, формализовали, а не ввели, наверное. Мы же любой класс рассматриваем всегда как абстракцию, а это самая основа. И кстати, на том же msdn у майков, или как они там его щас в learn переименовали, в обучающем разделе давным давно ооп с абстракции рассматривают :) А про солид. Я, честно говоря, даже хз как на примере факторио можно инверсию зависимостей показать. Остальное вроде как-то даже можно притянуть за уши 😂
@olegzorin3911
@olegzorin3911 4 ай бұрын
@@fed1splayДа, у нас абстракция была как само собой разумеющееся. Поэтому в отдельный пункт не выделяли.
@olegzorin3911
@olegzorin3911 4 ай бұрын
@@fed1splayПосмотрел оригинал. Все правильно сделал, что снял этот ролик ))
@sylphur2320
@sylphur2320 4 ай бұрын
Ну, является ли абстракция отдельным принципом - тот еще холивар. Основная претензия - абстракция не является именно ООПшной темой, она так или иначе применяется во всех парадигмах программирования. Этакий общий концепт
@bebra._.228
@bebra._.228 4 ай бұрын
Как программист, подтверждаю всё сказанное. Сова на глобус натянута успешно
@dima_on
@dima_on 4 ай бұрын
Да ладно. Про наследование херню же сказал.
@fed1splay
@fed1splay 4 ай бұрын
Я для всех экспертов в наследовании; для сдавших контрольную по ООП, для айтишников с 40-летним стажем и всех прочих переживающих за терминологию специальный закреплённый коммент оставил. Возможно, кто-то даже преисполнится и осознает, что натягивание сов на глобус сопряжено с конфликтами определений и понятий, и неизбежными компромисами между корректной формулировкой и донесением смыслов. С большим интересом посмотрю на пример "в фабриках и конвейерах", который нормальное наследование покажет 😂
@user-yc7ow9wx7i
@user-yc7ow9wx7i 4 ай бұрын
Про наследования фигня.
@shynekomaid
@shynekomaid 4 ай бұрын
@@fed1splay Ну так всегда так, не возможно точно и детально объяснить X через сопоставление с Y. То же тупое объяснение ООП через машину. Но для начала этого хватит, а если человек захочет, то получит опыт и разберется сам.
@user-sr4nw2iu2u
@user-sr4nw2iu2u 4 ай бұрын
@@fed1splay наследование можно на примере жуков использовать.Да и в принципе все понятия ООП. Само понятие "жуки" - это абстракция, базовый абстрактный класс. Абстрактные классы реализации не имеют, соответственно и в игре просто "жука" не увидишь. Есть кусаки и плеваки - это наследники базового класса, имеют методы базового класса "ползти" и "ломать". Нам неизвестно, как они ползают, какими лапками перебирают в какой последовательности и по какому алгоритму, Это инкапсуляция. А вот как "ломают" - вблизи или издали - это уже полиморфизм.
@World_Spectrator
@World_Spectrator 4 ай бұрын
Всегда верил, что толковые идеи и мысли приходят в голову, либо сидя под яблоней, либо сидя на толчке😂
@user-st6rz6du5n
@user-st6rz6du5n 4 ай бұрын
Можно и на толчке под яблоней
@Prizrak_Leonis
@Prizrak_Leonis 4 ай бұрын
А под кокосовой пально мысли еще быстрее приходят, если мыслитель хорошо знаком с законом всемирного тяготения, особенно когда на эту пальму полез 🦀
@user-eb2ir7wm9f
@user-eb2ir7wm9f 4 ай бұрын
Так так, а я думал только у меня котлетки испорченые попались! Федя добро пожаловать в клуб))
@RA7581
@RA7581 4 ай бұрын
надо почаще его испорченными котлетками кормить. :)
@casper608
@casper608 4 ай бұрын
Ха-ха. Мне тоже в рекомендациях выпало, и я даже пытался смотреть... минуту. Как хорошо, что есть Фёдор, который может объяснить доступным языком работягам после завода.
@fed1splay
@fed1splay 4 ай бұрын
Тем не менее, это сова на глобусе)
@casper608
@casper608 4 ай бұрын
@@fed1splay Такова участь совы.
@p.k.r.7963
@p.k.r.7963 4 ай бұрын
Тоже, только я выдержал больше, а потом проклацал.
@cirno_the_mediocrity
@cirno_the_mediocrity 4 ай бұрын
работягам, приходящим с завода и идущим работать вечером на другой
@batpro7564
@batpro7564 4 ай бұрын
Как же я люблю шутки (черту владимиру привет) в подобных видосах
@Lexys3230
@Lexys3230 4 ай бұрын
И Юре профессионалу))
@agusha-gejmer
@agusha-gejmer 4 ай бұрын
О, мне буквально сегодня ролик этот попадался по ООП и факторку) полная шляпа
@groomgo
@groomgo 4 ай бұрын
короче что могу сказать, не зря я накатил 3 по 50, хотя бы с умным видом посидел и покивал, как будто что - то в этом шарю😆
@tushkan9691
@tushkan9691 4 ай бұрын
Спасибо огромное за подробное разжевывание) никакого сарказма) спасибо, чуть больше подобных видео, и будет классный обучающий канал!)))
@vinograd7857
@vinograd7857 4 ай бұрын
Спасибо. Все круто описали.
@mister_Iks
@mister_Iks 4 ай бұрын
Давно так не бомбило)) супер ролик))
@nagirov
@nagirov 4 ай бұрын
Коротко, ёмко и по делу. Фёдор, это прекрасно!
@user-su5bf9cn9t
@user-su5bf9cn9t 4 ай бұрын
Это однозначно лайк. Хотя логику с логистикой путаю. Просто Федино творчество нравится. Он хороший)
@user-uv8gc2gq3k
@user-uv8gc2gq3k 4 ай бұрын
логика логично будет основой умозаключений, сорян за тавтологию но тут она нужна. логистика - это как доставить умозаключение от мозга к языку
@rar24
@rar24 4 ай бұрын
главное столбы с опорами не путай
@MrHalfint
@MrHalfint 4 ай бұрын
5:15 - композиция и агрегация НЕ являются наследованием (is a), это части ассоциации (has a) пример наследования: есть абстрактный класс "модуль", от него наследуется абстрактный класс "модуль продуктивности", а от него наследуется "модуль продуктивности 1 уровня"
@fed1splay
@fed1splay 4 ай бұрын
Наследование в его "привычной" форме, как вид отношения между объектами, не показать через фабрики и заводы. Ну либо я хз, как :) Равно как и ассоциацию саму по себе. У меня был вариант - апгрейд лент через зелёный чертёж. Но мне это показалось слишком... Странным решением. При этом притянутые за уши композиция и агрегация как вид отношений без проблем ложатся. Пусть и не являются технически наследованием, но их применение вместо прямого наследования - вполне себе сова на глобусе, притянутая за уши :)
@MrHalfint
@MrHalfint 4 ай бұрын
@@fed1splayпросто наследование и ассоциация - это разные вещи, которые не стоит объединять) меня бы это точно запутало, если б я был новичком а вот мой пример мне бы зашёл (впрочем, у меня и не было сложностей с наследованием, когда я начинал осваивать ООП)
@fed1splay
@fed1splay 4 ай бұрын
Твой пример зайдёт, но его не показать практически :) Ну или опять же, я хз как. Логика, которой я руководствовался - банальна. Агрегация предпочтительней композиции, композиция предпочтительней наследования. При этом отсутствует разделение рантайма и компиляции. В итоге наглядное пояснение заходит в тупик. Ну а далее, натягивание совы на глобус. Закреплю, пожалуй, пояснительный коммент касаемо вопроса отношений :) Спасибо
@MrHalfint
@MrHalfint 4 ай бұрын
@@fed1splayа что означает "предпочтительнее" в данном контексте?) для чего композиция предпочтительнее наследования?)
@fed1splay
@fed1splay 4 ай бұрын
Блин, я хочу спать, я не хочу думать 😂 Наследование определяет поведение класса на этапе компиляции, композиция позволяет делать в рантайме, а агрегация через интерфейс и даёт слабую связь. Вот и предпочтения отсюда. Я хз, как это в разных языках реализуется, я не настолько эксперд. Спокойной ночи:)
@umnedhacker567
@umnedhacker567 4 ай бұрын
Великий видос!)
@darkfrei2
@darkfrei2 4 ай бұрын
О, я видел это видео, спасибо за обзор на него!
@Ihor_Semenenko
@Ihor_Semenenko 4 ай бұрын
Ютуб ролик предлагал, но даже смореть не стал, нор от этого ролика не удержался - прочитав в названии про сову и глобус, а по факту краткую лекцию послушал, теперь сижу зеваю, надо такого на ночь всегда смотреть.
@turbanov
@turbanov 4 ай бұрын
Ох, как же у меня бомбануло тогда) Превьюшка шикарная😊
@fed1splay
@fed1splay 4 ай бұрын
Сам не похвалишь)
@pronub9743
@pronub9743 4 ай бұрын
Ура-ура, новые ролики, ведущие за собой потоки праведных рек гнева!
@fed1splay
@fed1splay 4 ай бұрын
Порождать ненависть - это наша работа!
@user-pj1nk2xf7j
@user-pj1nk2xf7j 4 ай бұрын
Круто, даже я понял)
@IYBeats
@IYBeats 4 ай бұрын
Раскидал по фактам! Тоже выдавало в рекомендации программирование в Факторке
@Leshocs1
@Leshocs1 4 ай бұрын
Фига ссе, новый ролик, не гецмплецный, от Феди!!!! ❤❤❤❤
@OlegShinder
@OlegShinder 4 ай бұрын
ОО, не одному мне этот видос попался, тоже просто помотал и всё на этом
@user-mi1lp5wo2o
@user-mi1lp5wo2o 4 ай бұрын
Всё ещё достоин
@Kazakk47
@Kazakk47 4 ай бұрын
И тебе с праздником Федор 😅
@lastloony
@lastloony 4 ай бұрын
Это шедевр!
@areswild4735
@areswild4735 4 ай бұрын
какая же жесть.... Фёдор, давай ещё!!!11
@mihailmitrofanov4304
@mihailmitrofanov4304 4 ай бұрын
Федя, привет. Давно не было видео, какие планы на ближайшее время. Нет желания перепройти боба и ангела? У тебя было, но там вообще что-то очень старое. Если решишь, то хотелось бы увидеть мегабазу на ситиблоках
@vladatom
@vladatom 4 ай бұрын
Всё понятно, спасибо! Прекрасная подача. При желании ты мог бы преподавать и всё получалось бы.
@fed1splay
@fed1splay 4 ай бұрын
Ну уж нет)
@vladatom
@vladatom 4 ай бұрын
@fed1splay 😅в идеальном мире)
@rar24
@rar24 4 ай бұрын
композиция и агрегация это про отношения экземпляров, а наследование - про переиспользование в видосе произошло натягивание)
@compolomus9719
@compolomus9719 4 ай бұрын
этож как сгореть должно было, чтобы даже ролик запилил)
@madvUA
@madvUA Ай бұрын
Зачетная травка попалась ))
@Triariy89
@Triariy89 4 ай бұрын
Композиция и агрегация - это паттерны программирования... Наследование то тут с какого перепугу? Наследование предполагает класс родителя и класс наследника (дочерний класс). Наследник "наследует" поведение родителя, добавляя или изменяя поведение родителя. Наследованием тут лучше сказать так - есть печь. Наследником для печи будет стальная печь, потому как делает тоже самое, но в два раза быстрее. Наследником для стальной печи можно сделать электрическую печь, т.к. она потребляет электроэнергию, а не уголь. Композиция и агрегация - это специальные приемы комбинирования различных парадигмов ООП (наследование, полиморфизм и инкапсуляция + SOLID). Абстракция тоже паттерн, если на то пошло, вы тут называете её принципом единственности ответственности из SOLID
@fed1splay
@fed1splay 4 ай бұрын
"Как давно вы варите наркотики?" :) Композиция и агрегация - это вид ассоциации. Наравне с наследованием (а при должном натягивании совы на глобус, это можно даже рассмотреть как некое "наследование", что и сделано) ассоциации позволяют строить иерархии отношений типов/классов. Классическое наследование невозможно представить игровыми способами. Приведённый пример с печками - это чистой воды полиморфизм. Наследованием тут будет некоторая печка (любого грейда), как потомок, и базовый класс для печки, как предок, который существует ТОЛЬКО на уровне api игры. Стальная печь не является потомком каменной печи. Электропечь не является потомком стальной. Это просто вариации на тему. Они все потомки одного базового класса - базовой абстрактной печки. Абстракция - это формализованный подход, предполагающий описание необходимых атрибутов и взаимодействий сущностей в рамках некоторой системы, для её абстрактного представления. Например, формирование классов и их отношений/взаимосвязей. Никакого отношения к паттернам абстракция не имеет. При чём тут солид, тоже непонятно. Солид - это набор рекомендаций (принципов), чтобы код как можно меньше походил на винегрет.
@Triariy89
@Triariy89 4 ай бұрын
@@fed1splay шишечным вареньем вообще представлять какие то сложные механизмы игры примитивными терминами... Тут даже банальная железная руда уже является сложной иерархической сущностью (экземпляром класса) конкретной абстракцией и агрегацией отдельных свойств (тип, спрайт, время выплавки и прочего). Тот, кто первоначально задался идеей "абстрагировать" саму игру, её верхнеуровневые компоненты, до уровней знаний языка программирования... 😭😭 Лучше бы матчасть учил.. не надо так людей пугать. А то будут одни гуманитарии
@RA7581
@RA7581 4 ай бұрын
хорошая презентация, в повер поинт :)
@MyXcompany
@MyXcompany 4 ай бұрын
Посмотрел минуту и уже лайк поставил!
@yukiyasudo2356
@yukiyasudo2356 4 ай бұрын
Федя, у тебя прекрасно получается объяснять. Я который в этом ничего не понимает, что то да понял! Продолжай в том же духе 👍 Видел у тебя на видосах, что ты любишь больше играть в ваниль факторио, чем с модами, но с таким объяснением хотел бы послушать разбор мода Реалистичные Реакторы. Уже 4 день бьюсь над строительством реактора и вообще че-то не получается, не понимаю как стабилизировать 2-а реактора. Один Чернобыль №2 получается)
@fed1splay
@fed1splay 4 ай бұрын
Я в SE уже 2й год играю 😂
@yukiyasudo2356
@yukiyasudo2356 4 ай бұрын
@@fed1splay не ну а, :/ Понял. А в SE есть такой мод? (я про Реакторы)
@sbknet5080
@sbknet5080 4 ай бұрын
Ура, наконец то ФЕДОР ляпин про факторку!
@joehart7382
@joehart7382 4 ай бұрын
ДОЖДАЛСЯ!!!
@WladySpb
@WladySpb 4 ай бұрын
О, я тоже видел упомянутый ролик😁
@andre928
@andre928 4 ай бұрын
Отлично.
@maksimsemenov3248
@maksimsemenov3248 4 ай бұрын
Замечательная идея для видео. Было бы здорово еще разобраться является ли абстракция моделированием, в чем разница между состоянием и структурой, с каких пор композиция из реализации отношения "has-a" перешла в реализацию "is-a", что такое ассоциация и её отличия от наследования
@fed1splay
@fed1splay 4 ай бұрын
Я уже несколько раз отвечал про проблему представления отношений. Я не смог найти примера в игре для наследования. поэтому... :) Про абстракцию. Майкрософт, например, формулирует абстракцию так: Abstraction - Modeling the relevant attributes and interactions of entities as classes to define an abstract representation of a system.
@nekay9561
@nekay9561 4 ай бұрын
Зашёл на ютюб, в реках появилось видео про ООП в Факторио. Обновил страницу и в реках появилось твоё видео. Совпадение? Не думаю.
@endoradai
@endoradai 4 ай бұрын
Это интересно, ещё можно попробовать перенести какие то архитектурные паттерны в факторку. Я пробовал на ситиблоках 20х20 сделать слои как в clean архитектуре, но в итоге получилось очень не эффективно из-за ограниченной пропускной способности железной дороги. data - в моей реализации это была как бы база данных/сундуки, в которой были ситиблоки с производимыми и добываемыми ресурсами. domain - тут находились ситиблоки с производственными фабриками . ситиблок запрашивает ресурс из data слоя, обрабатывает его и отправляет обратно в data слой производимый ресурс. ui - это был абстрактный слой , который выводил количество ресурсов из data слоя, я это заменил модом для интерфейса. Но в итоге получилось очень не эффективно, большие проблемы с поездами и ltn модом. Еще пострадал геймплей, так не особо интересно играть, больше похоже на работу, но продумывать это все было интересно.
@timbeopwonloginov3648
@timbeopwonloginov3648 4 ай бұрын
*коммент для продвижения в алгоритмах ютуба* и благодарочка за отличное пояснение =^__^=
@Ostrov1010
@Ostrov1010 4 ай бұрын
Молодец!Не опустился до маргинализации и примитивизации темы,а мажоризировал до специальной терминологии😂
@Дружняев
@Дружняев 3 ай бұрын
Кекнул с "Если говорить в общих ЧЕРТАХ". АВХХАХАХАХ
@Asmodian1990
@Asmodian1990 4 ай бұрын
Аааа. Ну теперь то всё понятно!
@borismirzakhanyan3545
@borismirzakhanyan3545 4 ай бұрын
Во всех гайдах про ООП должно быть: "инкапсуляция - это изоляция", чтобы байтить хомячков на холивары
@fed1splay
@fed1splay 4 ай бұрын
Это сокрытие!
@TheTempterable
@TheTempterable 4 ай бұрын
Вот и забайтил )))
@Rainbow_song
@Rainbow_song 4 ай бұрын
​@@fed1splayцитируя классика " Я могу оформить харчок в лицо любому кто говорит что инкапсуляция - это сокрытие, значит ли это что я харчок ?"
@fed1splay
@fed1splay 4 ай бұрын
Можно взять определение инкапсуляции от майкоософт, и слово Hiding перевести как угодно) Hiding the internal state and functionality of an object and only allowing access through a public set of functions.
@brinza888
@brinza888 4 ай бұрын
@@fed1splayсокрытие многим не нравится в том контексте, когда его имеют в виду именно как модификаторы доступа private. Если же речь про сокрытие внутреннего состояние или по-другому про связывание данных и операций над ними в едином целом (объекте), то всех все устраивает.
@ReeZee15
@ReeZee15 4 ай бұрын
11/10 =))
@user-ym9rc1qj7l
@user-ym9rc1qj7l 4 ай бұрын
нормас. одобояем
@MaksimMelnik
@MaksimMelnik 4 ай бұрын
Жду когда в учебных заведениях основы программирования будут преподавать с помощью факторки. Ну и курсач - это твоя сохранёнка + подробное описание о применённых методах 😂
@alexmalov8023
@alexmalov8023 4 ай бұрын
Красавчик
@roflin4ik
@roflin4ik 4 ай бұрын
классом я бы назвал чертежи, по которым мы строим цеха и прочее, а вот то, что мы построили по этим чертежам - объекты/экземпляры
@ai-katrin
@ai-katrin 4 ай бұрын
В ооп я бы мог сделать так: создать класс ЦЕХ(мощность) с методом "забрать пластины". И создать функцию фабрика(кол-во цехов). И в функции "фабрика" в цикле насоздавать экземплеряов класса ЦЕХ. Подозреваю в фактории это не реализуемо. И все на самом деле сводится к модульному программированию.
@endy587
@endy587 Ай бұрын
У меня вопрос, перерыл весь инет, не нашел еормальной информации как установить чертежи с инета в факторио
@danonishuk8961
@danonishuk8961 4 ай бұрын
Такие же эмоции вызвало, как к месту твой ролик
@user-kx2fe2sg9o
@user-kx2fe2sg9o 4 ай бұрын
🔥
@tassadarthehightemplar754
@tassadarthehightemplar754 4 ай бұрын
А для тех, кому не пришло в рекомендациях, можно ссылку на изначальное видео, от которого Фёдора бомбануло?
@white73h4
@white73h4 4 ай бұрын
Норм)) давай теперь принципы SOLID))
@hedgehogsch.7270
@hedgehogsch.7270 4 ай бұрын
Молодец, а теперь поясни за функциональную парадигму в Факторио)
@rainbowGrizz
@rainbowGrizz 4 ай бұрын
Ха-ха, нормально пояснил. Я один тот первый видос не видел, как будто)
@Demon-gr3ks
@Demon-gr3ks 4 ай бұрын
Красава
@romangolumbevskiy7268
@romangolumbevskiy7268 4 ай бұрын
За 11 минут раскидал по понятиям лучше, чем всякие гуру Пайтона и JS. 😎
@nikelsad
@nikelsad 3 ай бұрын
Один из видов полиморфизма -- перегрузка методов в нескольких формах, с разными аргументами и разной реализацией. В Факторио можно было бы хорошо это показать, вот несколько вариантов полиморфизма: 1. Один и тот же модуль даёт разные продукты в зависимости от поступивших аргументов. В этом видео, например, можно подавать в модуль медь и железо и получать первые (зелёные) платы, а если добавить нефть -- получатся уже вторые и третьи (красные и синие) платы. Хоть в начале на этот модуль потратишь больше ресурсов, но после появления нефти он без перестройки будет выполнять доп. функционал. В Факторио это невыгодно, а в программировании лишние строки кода есть не просят :) 2. Плавильный цех может выполнять одну функцию, но быть построен из печей разного вида. Имеем разные формы (реализации) класса, выполняющие одну функцию.
@AndreySold
@AndreySold 4 ай бұрын
Я смотрю ролик, всё легко и понятно! После просмотра попросили пересказать суть. Так же я: "эээ, ну там что-то на программистском..."
@Adder_ai
@Adder_ai 4 ай бұрын
А методичка будет? А сдача когда?
@fed1splay
@fed1splay 4 ай бұрын
Ты контрольную вначале сдай!
@user-ri9gq9ox6k
@user-ri9gq9ox6k Ай бұрын
Сижу на МКС. Вижу зарево, у кого-то полыхнуло, а потом перевожу взгляд, а там кто-то сову на глобус натягивает методом объекте ориентированного программирования. Мне даже и в голову не пришло, что эти два события связанны.
@avalon1000
@avalon1000 4 ай бұрын
🤣🤣🤣🤣🤣🤣🤣🤣Феде реально пукан Бомбануло!первый раз доведённым вижу!
@user-hd8oy9xp8m
@user-hd8oy9xp8m 4 ай бұрын
Давай ещё уроки!
@Ilvrak
@Ilvrak 4 ай бұрын
к дизайну заводов в факторио хорошо было бы применено не ООП, а общие принципы дизайна систем - масштабирование, вертикальное, горизонтальное, автоскейлинг, кэширование, мониторинг, логгирование) это же собственно и есть игра про System Design тут ещё можно было бы снять ролик на примере аналогии факторио и книги по Теории Ограничений Систем (Элияху Голдратта) )
@multiprogramm
@multiprogramm 4 ай бұрын
На наследовании моя сова начала кричать и отбрыкиваться, но в целом годно, натянул :D
@fed1splay
@fed1splay 4 ай бұрын
А я хз, как чистое наследование как иерархию отношений на чисто игровых примерах показать) Кому надо - обратится к теории, и разберётся в различиях 😂
@kuzmich743
@kuzmich743 4 ай бұрын
Я ни разу не програмист, но ролик тот попался, сложно было и я его не досмотрел. А тут даже чего-то понял)
@LE0p01d
@LE0p01d 2 ай бұрын
7:50 Это Владимир! И он чертовски хорошо выглядит!
@eirpile
@eirpile 4 ай бұрын
Бальдэжное видэо. Хороший стримлер бамбид на интернет + интересный контент. Мог бы даже потеребонькать, но самовнушением приписал руке свойство абстракции и теперь она не стыкуется с реальными предметами. Буду теперь думать как это исправить. Главное - в процессе не приписать подобное свойство мозгу, а то ещё выйду из матрицы раньше времени, и не смогу пронаблюдать сей дурдом до логичного финала.
@muskonobim9477
@muskonobim9477 4 ай бұрын
У меня тоже появлялась мысль, что между логистическими играми и программированием есть что-то общее (даже больше чем с играми где нужно писать код). Прикольно что есть люди, которые разделяют мои беды с башкой. Спасибо за видео! Теперь бессмысленный поток текста который можно не читать (: Даже среди программистов ведутся срачи про ООП (особенно про наследование). Немного отсебятины: Абстракция - это абстрагирование от лишнего. Практический пример: Нам нужно написать программу, которая сортирует яблоки по весу. Для этого программе НЕ нужно знать цвет яблока, размер, форму, где вырос, откуда привезли, сорт. Нам нужно знать только вес, от всего остального мы абстрагируемся. Это и есть абстракция в контексте программирования. Звучит банально и очевидно. Именно по этой причине большинство программистов игнорируют этот принцип и говорят что ООП состоит из 3 принципов, а не из 4. Определение абстракции из видео это скорее определение самого ООП, чем абстракции. Инкапсуляция. Это не простая тема. На практике может иметь не очевидные подводные камни из-за которых этот принцип очень легко нарушить. Инкапсуляция - это защита целостности данных. Есть проблема: у нас есть функция/процедура/метод который работает с данными. При чем данные могут быть не только поступающие из вне, но и внутренние, необходимые для работы метода. Если мы будем из вне менять внутренние данные метода, то это может привести к ошибке/поломке/неправильной работе метода. Одной из причин которая может привести к этой проблеме - глобальные переменные/данные. По этому, глобальные переменные запрещены. Главная цель инкапсуляции - защита целостности данных. Что, как говорилась ранее, не такая простая задача. Однажды нарушение инкапсуляции (из-за глобальных переменных) чуть не привело к войне. Ложно сработала система защиты. Так же была проблема в бортовом компьютере авто, когда блокировалась педаль тормоза. Определение инкапсуляции из видео в целом верная, но это тонкая грань, где легко нарушить инкапсуляцию и стереть грань между классом и структурой данных. Разница между классом и структурой - в классе, методы меняющие внутренние переменные/данные/состояния обязаны обладать сложной логикой, в ином случае это будет нарушением инкапсуляции и это будет уже скорее структурой, чем классом, ведь в таком методе нет никакого смысла. Пример: класс кошелек. Метод меняющий количество денег в кошельке обязан обладать сложной логикой проверяющей что: кошелек не может иметь отрицательное значение, иногда кошелек может иметь максимальное значение и т.д. В случае провала проверки метод обязан либо "кидать исключение"(ошибку), либо, если ситуация типичная, возвращать "код ошибки". В программировании коды ошибок запрещены, вместо них использую boolean(да, нет), либо enum(именованные коды ошибок). В таком случает метод должен именоваться с Try. Возвращать null(ничего) запрещено. Наследование. Популярная тема для срачей. Популярная трактовка наследования устарела и "правильное" определение будет звучать так: Наследование - конкретная реализация таких двух принципов как: полиморфизм и DRY (Запрет на дубляж/KopyPaste). Есть 2 проблемы: 1. Дубляж кода. Чтобы исправить одну ошибку, нужно сделать изменение в нескольких местах, что иногда бывает невозможно. 2. Дубляж кода в if-else. В программировании if-else почти запрещены, почти от всех них можно избавиться с помощью полиморфизма. Главная цель наследования - борьба с дубляжем. Наследование это скорее не принцип ООП, а конкретная реализация двух других принципов. У наследования есть альтернативы: интерфейсы; композиция/агрегация; в языке Go (Golang) есть альтернатива - "Встраивание"; в языке Rust - трейты. Так же есть принцип, который гласит "Composition over inheritance" (Композиция важнее наследования). Это отдельная тема для срачей. Мое мнение, "истина где-то посередине". В большинстве случаев использовать композицию, но не отказываться от наследования (хотя, если отказаться, ничего страшного не должно произойти, ведь есть альтернативы). Наследование - это очень сложный инструмент, неправильное использование которого может привести к проблемам, но в правильных руках проблем быть не должно. Определение наследование из видео вроде верная, но мне кажется что реализовать наследование в Факторио не возможно, если только через чертежи можно натянуто реализовать, а так это вроде возможно реализовать на уровне механик, идея для мода: вносишь изменение в чертеж(класс), и изменение автоматически применяется в дочерних чертежах(производных классах) и дроны начинают автоматически перестраивать старые заводы(объекты) реализующие чертеж. (Говорю как человек никогда не игравший в Факторио) Полиморфизм - способность метода работать с данными разных типов. Есть проблема описанная ранее - дубляж кода. Цель полиморфизма - борьба с ним. Тут мне сказать нечего. В видео все вроде верно.
@Just-York
@Just-York 4 ай бұрын
Блин, только сейчас увидел это видео) Тоже видел этого парня и решил сделать свое видео, но ты сделал это быстрее :((
@doctrof
@doctrof 4 ай бұрын
Ребята а можно ссылку на ролик, от которого собственно пригорело?)
@alekseibird
@alekseibird 4 ай бұрын
kzfaq.info/get/bejne/oK5xlraBktnLXYU.html
@zakarka-ju2ff
@zakarka-ju2ff 4 ай бұрын
Ля, мне тоже ролик тот попался, но отложил. Так что пойду тоже "посижу" и посмотрю)
@fed1splay
@fed1splay 4 ай бұрын
Посидеть и отложить - это важно)
@user-ot3pc2xm4c
@user-ot3pc2xm4c 4 ай бұрын
Сделай гайд по жд и LTN
@zman7738
@zman7738 17 күн бұрын
Федя, что случилось? Чем-то другим занялся?
@gami29rus
@gami29rus 4 ай бұрын
Чаще бы такие ролики попадались тебе)! Гляди и гайды вернуться)
@fed1splay
@fed1splay 4 ай бұрын
Тебе лишь бы что-то, что будет пукан мне подпаливать 😂
@borismirzakhanyan3545
@borismirzakhanyan3545 4 ай бұрын
Нужно самим делать кринжовые ролики, чтобы они попадались fed1splay и он не забрасывал канал
@gami29rus
@gami29rus 4 ай бұрын
@@fed1splay зато какой шикарный ролик вышел)
@rinko6406
@rinko6406 4 ай бұрын
Что я тут делаю? Я же даже не программист... Но всё равно было занятно поглядеть и послушать разъяснения термина, что услышал впервые.
@IvanSemin
@IvanSemin 4 ай бұрын
тоже набрал 10 космическую с того ролика 😂
@user-pd8vg1gd5z
@user-pd8vg1gd5z 4 ай бұрын
Примеры наследования: Жуки и Броня как базоовые классы, Кусака, Плевака, как промежуточные, Маленький_Кусака - конкретный класс, ну и всякие абстрактные Топливо, Транспорт, Жидкость итд. И с ними вполне работает полиморфизм: например труба и или бочка принимает любого наследника жидкости (Нефть, Вода), а обратное неверно, вместо конкретной нефти воду подать нельзя
@fed1splay
@fed1splay 4 ай бұрын
Как только ты обращаешься к прототипу или апи в целом, ты сразу же выходишь за рамки игрового представления :)
@ProCto_Filya
@ProCto_Filya 4 ай бұрын
то чуство когда пытался установить SFML а наткнулся в коментах на фёдора))
@user-vq4yz9jl1w
@user-vq4yz9jl1w 4 ай бұрын
Итак посмотрев это видео, как человек далекий от ООП, я не смог определиться я сова или глобус)))
@billgrover3130
@billgrover3130 4 ай бұрын
А где стрим чёрного экрана? Я чет найти не могу. Знаю, что Федя обещал. Не мог же он не выполнить обещание!
@Place_for_your_advertisement.
@Place_for_your_advertisement. 4 ай бұрын
*Лучшая абстракция в Factorio - облачная архитектура, где "облако" - это - буквально - облако дронов,* которые растаскивают продукцию между логистическими сундуками, а каждый производственный юнит - просто производящее здание (!одно!) + логистические сундуки с манипуляторами (или, если нужна жидкость - одно производящее здание + баки + упаковщики/распаковщики бочек, которые опять же - при помощи логистических сундуков с манипуляторами и дронов - автоматически растаскиваются). Это имба. Основная фича такой архитектуры - убойная гибкость и масштабируемость, а равно и автобалансировка (пусть и субоптимальная) объёмов выпуска продукции. Развернуть ещё один чертёж - производственное здание заданного типа с снабжением "из воздуха" - элементарно, на любой локации, простым Ctrl+C - Ctrl+V, резко нарастив производство/переработку чего угодно. Добавить к существующему производству ещё какое-то? - Элементарно: постройка + сундуки + дроны всё принесут. Накосячить с организацией построек - не страшно: запросто всё можно перестроить, т.к. связей между зданиями - вообще никаких, скажем производство красных микросхем никак не привязано к производству зелёных, вся наличная продукция доступна глобально. Субоптимальная автобалансировка - особенно хороша тем, что вообще не напрягает мозг: сколько нужно выпускать одной продукции, для выпуска второй чесать репу не надо. Из "глобального" "облака" - берётся сколько нужно или всё, что есть. Поэтому достигается субоптимальное распределение во времени: если, скажем, для двух типов продукции нужны шестерёнки, то как только произведено нужное количество продукции первого типа, все мощности производства шестерёнок автоматически переключаются на снабжение производств продукции второго типа: продукция, необходимая в нескольких типах производств автоматически перераспределяется в пользу дефицитных при достижении насыщения в остальных, а не тупо валяется - как при жёстких связях с конвейерами. Плюс задействуется почти оптимальный маршрут. Особенно, если учесть, что конвейеры движутся с константной скоростью по некоторому маршруту (с обходом препятствий), а дроны летят по прямой - разница между путём и перемещением - школьный курс физики - налицо: конвейеры - путь, а дроны - перемещение (всегда по прямой из пункта A в Б). Недостатков, примерно 3: 1) Требует много энергии и дронов 2) Имеет тенденцию к деградации в отношении снабжения сырьём - обратная сторона кратчайшего маршрута при доставке: ближайший ресурс истощился -> следующий будет дальше 3) Субоптимально, а не оптимально. Т.е. распределение близко к оптимальному но никогда не является оптимальным. Особенно остро это проявляется при обострении дефицита: во входных сундуках начинают накапливаться неполные объёмы, т.е. в нескольких производственных зданиях - суммарно - есть объём входных ресурсов для производства по заданному рецепту, но ни в одном из них - взятом в отдельности - он не является достаточным: если бы все эти ресурсы были на входе у одного здания - производство началось бы, а де-факто, оно не начинается, т.к. они по чуть-чуть распределены у всех.
@tufoed
@tufoed 3 ай бұрын
фсе круто, но фпсу карачун. но на кластере из суперкомпуктеров наверно будет норм
@MultiPetrovi4
@MultiPetrovi4 4 ай бұрын
Лайк за Вована !
@fed1splay
@fed1splay 4 ай бұрын
Тысяча чертей!
@nphoenix
@nphoenix 4 ай бұрын
Надо ещё эксперименты провести с постройкой базы по различным паттернам программирования, адаптируя их под факторку
@fed1splay
@fed1splay 4 ай бұрын
Там чуть ли не половину GoF паттернов можно при желании натянуть) Вопрос только, какой смысл
@Adder_ai
@Adder_ai 4 ай бұрын
GoF - Globus on Filin? 😂
@fed1splay
@fed1splay 4 ай бұрын
@@Adder_ai in
@antonbakaiev
@antonbakaiev 4 ай бұрын
Если простыми словами "моделирование сущностей", про себя думаю, ну нахер😂😂😂😂😂
@blezzrot4115
@blezzrot4115 4 ай бұрын
теперь нужна парадигма ФП (функциональное программирование) в factorio
@user-tj9pc4gz9s
@user-tj9pc4gz9s 4 ай бұрын
Вся фабрика суть - одна большая do-нотация, перелопачивающая на потоке монады-ресурсы?
@zuziarinechannel
@zuziarinechannel 4 ай бұрын
Что за гора хайпа в моей любимой игре про макароны
@sklyanskiy
@sklyanskiy 4 ай бұрын
У понятиях, в нулевом элементе, ты написал "абсракция")))
@Desotterro
@Desotterro 4 ай бұрын
Жду объяснение всего с++ на примере факторки за 2 часа от ждуна до сеньора
@user-yn8or6vf4d
@user-yn8or6vf4d 4 ай бұрын
Уважаемый Федор, здравствуйте! Зачем при объяснении, сути полиморфизма, была вставлена картинка Владимира, да ещё в купе с фразой, "в общих чертах"? Я пока ржал, не понял сути полиморфизма. По крайней мере, не понял ваших объяснений! Шутка зачётная! Спасибо за толковый контент!
@user-zr8pm9km5f
@user-zr8pm9km5f 4 ай бұрын
Ахаха тоже вчера попался этот ролик посмотрел послушал промотал ни х я не понял забил сегодня посмотрел тоже от нормального факторщика и сразу как все понял😂😂
Руководство Factorio - Атомная станция
16:44
ФёдорЛяпин fed1s Play
Рет қаралды 188 М.
Плохой vs. хороший код / wtf is clean code
11:50
Best Toilet Gadgets and #Hacks you must try!!💩💩
00:49
Poly Holy Yow
Рет қаралды 10 МЛН
ПРОВЕРИЛ АРБУЗЫ #shorts
00:34
Паша Осадчий
Рет қаралды 6 МЛН
Школа FACTORIO - 12 ВАЖНЫХ ВЕЩЕЙ (нулевой урок)
15:08
ФёдорЛяпин fed1s Play
Рет қаралды 477 М.
Workers & Resources Soviet Republic BullsRegion
44:30
David Pavlov
Рет қаралды 1,3 М.
Factorio Спустя 10 Часов
28:24
Allaster
Рет қаралды 393 М.