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

2024 ж. 7 Нау.
34 672 Рет қаралды

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

Пікірлер
  • Парни. Кого не устраивает вольная трактовка отношений между объектами в вопросах наследования и ассоциации, можете предложить свой вариант, КАК это можно показать через игровые средства, пусть даже это будет точно также притянуто за уши. Только пожалуйста, давайте такие примеры, которые поймёт даже мой кот :) UML схемы прилагать необязательно. Спасибо :)

    @fed1splay@fed1splayАй бұрын
    • Сложна, сложна блять! Нихуя не понимаю!

      @seaways404@seaways404Ай бұрын
    • ну наследование лучше на примере печки, типа вот обычные печки в них нужно ложить уголь, вот печка получше, она тоже потребляет ресурс и выдаёт результат, но подключается уже проводом, а вообще сложно )

      @user-in8hp5vu6h@user-in8hp5vu6hАй бұрын
    • Да нет в игре объектов, отвечающих отношению предок-потомок :) Разные тиры объектов - это вариант полиморфизма. Размеченный, и позже расставленный блюпринт - это интерфейс и реализация. Чистого наследования нет. Ближайшая/родственная аналогия - то, что приведено в ролике. Можно было бы вообще эрзац-наследование в форме ассоциаций не рассматривать, но тут в комментах тогда полыхало бы ярче тысячи солнц. Да даже без этого иногда вспыхивает 😂 А я не настолько жесток)

      @fed1splay@fed1splayАй бұрын
    • @@fed1splay ты просто понтуешься сложными терминами, признай это.

      @seaways404@seaways404Ай бұрын
    • @@fed1splay Есть наследование! например у тебя есть сборщик первого тира и ты его апгрейдишь на сборщик второго тира. Все продолжает работать рецепт тот же, но немного быстрее и появляются сокеты для модулей. Или например апгрейд белтов. Как стоял желтый белт/был изогнут - так и стал изогнут новый белт. Унаследовал предыдущие настройки (в т.ч. например фильтрацию или логику) от старого белта

      @MrBkorel@MrBkorelАй бұрын
  • Все: что-то там про 8-е марта. Федис: чисто мужицкое пояснение за ООП

    @zhanluka@zhanlukaАй бұрын
    • Пятница, цифра 8 упала на бок возле дня недели и получилось "ооп"

      @Prizrak_Leonis@Prizrak_LeonisАй бұрын
  • Вот рецепт, как получить новое видео от Федора: 1) Делаем ролик о программировании, в котором несем дичь. 2) Отправляем в обязательные рекомендации Федору. 3) Наслаждаемся новым видосом.

    @steveq1938@steveq1938Ай бұрын
  • Как программист, подтверждаю всё сказанное. Сова на глобус натянута успешно

    @bebra._.228@bebra._.228Ай бұрын
    • Да ладно. Про наследование херню же сказал.

      @dima_on@dima_onАй бұрын
    • Я для всех экспертов в наследовании; для сдавших контрольную по ООП, для айтишников с 40-летним стажем и всех прочих переживающих за терминологию специальный закреплённый коммент оставил. Возможно, кто-то даже преисполнится и осознает, что натягивание сов на глобус сопряжено с конфликтами определений и понятий, и неизбежными компромисами между корректной формулировкой и донесением смыслов. С большим интересом посмотрю на пример "в фабриках и конвейерах", который нормальное наследование покажет 😂

      @fed1splay@fed1splayАй бұрын
    • Про наследования фигня.

      @user-yc7ow9wx7i@user-yc7ow9wx7iАй бұрын
    • @@fed1splay Ну так всегда так, не возможно точно и детально объяснить X через сопоставление с Y. То же тупое объяснение ООП через машину. Но для начала этого хватит, а если человек захочет, то получит опыт и разберется сам.

      @shynekomaid@shynekomaidАй бұрын
    • @@fed1splay наследование можно на примере жуков использовать.Да и в принципе все понятия ООП. Само понятие "жуки" - это абстракция, базовый абстрактный класс. Абстрактные классы реализации не имеют, соответственно и в игре просто "жука" не увидишь. Есть кусаки и плеваки - это наследники базового класса, имеют методы базового класса "ползти" и "ломать". Нам неизвестно, как они ползают, какими лапками перебирают в какой последовательности и по какому алгоритму, Это инкапсуляция. А вот как "ломают" - вблизи или издали - это уже полиморфизм.

      @user-sr4nw2iu2u@user-sr4nw2iu2uАй бұрын
  • Когда нумеруешь элементы списка с нуля: -да я пограммист-

    @EgoricNoc@EgoricNocАй бұрын
    • Просто абстракцию ввели относительно недавно. В далеких 90х у нас было только три пункта 1-3. Так что вполне справедливо, что там 0 ). Для расширения кругозора могу ещё предложить посмотреть на вариацию solid. Не трудно догадаться, что тут аж 5 принципов.

      @olegzorin3911@olegzorin3911Ай бұрын
    • Я бы сказал, формализовали, а не ввели, наверное. Мы же любой класс рассматриваем всегда как абстракцию, а это самая основа. И кстати, на том же msdn у майков, или как они там его щас в learn переименовали, в обучающем разделе давным давно ооп с абстракции рассматривают :) А про солид. Я, честно говоря, даже хз как на примере факторио можно инверсию зависимостей показать. Остальное вроде как-то даже можно притянуть за уши 😂

      @fed1splay@fed1splayАй бұрын
    • @@fed1splayДа, у нас абстракция была как само собой разумеющееся. Поэтому в отдельный пункт не выделяли.

      @olegzorin3911@olegzorin3911Ай бұрын
    • @@fed1splayПосмотрел оригинал. Все правильно сделал, что снял этот ролик ))

      @olegzorin3911@olegzorin3911Ай бұрын
    • Ну, является ли абстракция отдельным принципом - тот еще холивар. Основная претензия - абстракция не является именно ООПшной темой, она так или иначе применяется во всех парадигмах программирования. Этакий общий концепт

      @sylphur2320@sylphur2320Ай бұрын
  • Всегда верил, что толковые идеи и мысли приходят в голову, либо сидя под яблоней, либо сидя на толчке😂

    @World_Spectrator@World_SpectratorАй бұрын
    • Можно и на толчке под яблоней

      @user-st6rz6du5n@user-st6rz6du5nАй бұрын
    • А под кокосовой пально мысли еще быстрее приходят, если мыслитель хорошо знаком с законом всемирного тяготения, особенно когда на эту пальму полез 🦀

      @Prizrak_Leonis@Prizrak_LeonisАй бұрын
  • Так так, а я думал только у меня котлетки испорченые попались! Федя добро пожаловать в клуб))

    @user-eb2ir7wm9f@user-eb2ir7wm9fАй бұрын
    • надо почаще его испорченными котлетками кормить. :)

      @RA7581@RA7581Ай бұрын
  • Ха-ха. Мне тоже в рекомендациях выпало, и я даже пытался смотреть... минуту. Как хорошо, что есть Фёдор, который может объяснить доступным языком работягам после завода.

    @casper608@casper608Ай бұрын
    • Тем не менее, это сова на глобусе)

      @fed1splay@fed1splayАй бұрын
    • @@fed1splay Такова участь совы.

      @casper608@casper608Ай бұрын
    • Тоже, только я выдержал больше, а потом проклацал.

      @p.k.r.7963@p.k.r.7963Ай бұрын
    • работягам, приходящим с завода и идущим работать вечером на другой

      @cirno_the_mediocrity@cirno_the_mediocrityАй бұрын
  • О, мне буквально сегодня ролик этот попадался по ООП и факторку) полная шляпа

    @user-sd6ib5kd5x@user-sd6ib5kd5xАй бұрын
  • короче что могу сказать, не зря я накатил 3 по 50, хотя бы с умным видом посидел и покивал, как будто что - то в этом шарю😆

    @groomgo@groomgoАй бұрын
  • Как же я люблю шутки (черту владимиру привет) в подобных видосах

    @batpro7564@batpro7564Ай бұрын
    • И Юре профессионалу))

      @Lexys3230@Lexys3230Ай бұрын
  • 5:15 - композиция и агрегация НЕ являются наследованием (is a), это части ассоциации (has a) пример наследования: есть абстрактный класс "модуль", от него наследуется абстрактный класс "модуль продуктивности", а от него наследуется "модуль продуктивности 1 уровня"

    @MrHalfint@MrHalfintАй бұрын
    • Наследование в его "привычной" форме, как вид отношения между объектами, не показать через фабрики и заводы. Ну либо я хз, как :) Равно как и ассоциацию саму по себе. У меня был вариант - апгрейд лент через зелёный чертёж. Но мне это показалось слишком... Странным решением. При этом притянутые за уши композиция и агрегация как вид отношений без проблем ложатся. Пусть и не являются технически наследованием, но их применение вместо прямого наследования - вполне себе сова на глобусе, притянутая за уши :)

      @fed1splay@fed1splayАй бұрын
    • @@fed1splayпросто наследование и ассоциация - это разные вещи, которые не стоит объединять) меня бы это точно запутало, если б я был новичком а вот мой пример мне бы зашёл (впрочем, у меня и не было сложностей с наследованием, когда я начинал осваивать ООП)

      @MrHalfint@MrHalfintАй бұрын
    • Твой пример зайдёт, но его не показать практически :) Ну или опять же, я хз как. Логика, которой я руководствовался - банальна. Агрегация предпочтительней композиции, композиция предпочтительней наследования. При этом отсутствует разделение рантайма и компиляции. В итоге наглядное пояснение заходит в тупик. Ну а далее, натягивание совы на глобус. Закреплю, пожалуй, пояснительный коммент касаемо вопроса отношений :) Спасибо

      @fed1splay@fed1splayАй бұрын
    • @@fed1splayа что означает "предпочтительнее" в данном контексте?) для чего композиция предпочтительнее наследования?)

      @MrHalfint@MrHalfintАй бұрын
    • Блин, я хочу спать, я не хочу думать 😂 Наследование определяет поведение класса на этапе компиляции, композиция позволяет делать в рантайме, а агрегация через интерфейс и даёт слабую связь. Вот и предпочтения отсюда. Я хз, как это в разных языках реализуется, я не настолько эксперд. Спокойной ночи:)

      @fed1splay@fed1splayАй бұрын
  • Это однозначно лайк. Хотя логику с логистикой путаю. Просто Федино творчество нравится. Он хороший)

    @user-su5bf9cn9t@user-su5bf9cn9tАй бұрын
    • логика логично будет основой умозаключений, сорян за тавтологию но тут она нужна. логистика - это как доставить умозаключение от мозга к языку

      @user-uv8gc2gq3k@user-uv8gc2gq3kАй бұрын
    • главное столбы с опорами не путай

      @rar24@rar24Ай бұрын
  • Раскидал по фактам! Тоже выдавало в рекомендации программирование в Факторке

    @IYBeats@IYBeatsАй бұрын
  • Спасибо. Все круто описали.

    @vinograd7857@vinograd7857Ай бұрын
  • Спасибо огромное за подробное разжевывание) никакого сарказма) спасибо, чуть больше подобных видео, и будет классный обучающий канал!)))

    @tushkan9691@tushkan9691Ай бұрын
  • Коротко, ёмко и по делу. Фёдор, это прекрасно!

    @nagirov@nagirovАй бұрын
  • Композиция и агрегация - это паттерны программирования... Наследование то тут с какого перепугу? Наследование предполагает класс родителя и класс наследника (дочерний класс). Наследник "наследует" поведение родителя, добавляя или изменяя поведение родителя. Наследованием тут лучше сказать так - есть печь. Наследником для печи будет стальная печь, потому как делает тоже самое, но в два раза быстрее. Наследником для стальной печи можно сделать электрическую печь, т.к. она потребляет электроэнергию, а не уголь. Композиция и агрегация - это специальные приемы комбинирования различных парадигмов ООП (наследование, полиморфизм и инкапсуляция + SOLID). Абстракция тоже паттерн, если на то пошло, вы тут называете её принципом единственности ответственности из SOLID

    @Triariy89@Triariy89Ай бұрын
    • "Как давно вы варите наркотики?" :) Композиция и агрегация - это вид ассоциации. Наравне с наследованием (а при должном натягивании совы на глобус, это можно даже рассмотреть как некое "наследование", что и сделано) ассоциации позволяют строить иерархии отношений типов/классов. Классическое наследование невозможно представить игровыми способами. Приведённый пример с печками - это чистой воды полиморфизм. Наследованием тут будет некоторая печка (любого грейда), как потомок, и базовый класс для печки, как предок, который существует ТОЛЬКО на уровне api игры. Стальная печь не является потомком каменной печи. Электропечь не является потомком стальной. Это просто вариации на тему. Они все потомки одного базового класса - базовой абстрактной печки. Абстракция - это формализованный подход, предполагающий описание необходимых атрибутов и взаимодействий сущностей в рамках некоторой системы, для её абстрактного представления. Например, формирование классов и их отношений/взаимосвязей. Никакого отношения к паттернам абстракция не имеет. При чём тут солид, тоже непонятно. Солид - это набор рекомендаций (принципов), чтобы код как можно меньше походил на винегрет.

      @fed1splay@fed1splayАй бұрын
    • @@fed1splay шишечным вареньем вообще представлять какие то сложные механизмы игры примитивными терминами... Тут даже банальная железная руда уже является сложной иерархической сущностью (экземпляром класса) конкретной абстракцией и агрегацией отдельных свойств (тип, спрайт, время выплавки и прочего). Тот, кто первоначально задался идеей "абстрагировать" саму игру, её верхнеуровневые компоненты, до уровней знаний языка программирования... 😭😭 Лучше бы матчасть учил.. не надо так людей пугать. А то будут одни гуманитарии

      @Triariy89@Triariy89Ай бұрын
  • композиция и агрегация это про отношения экземпляров, а наследование - про переиспользование в видосе произошло натягивание)

    @rar24@rar24Ай бұрын
  • Давно так не бомбило)) супер ролик))

    @mister_Iks@mister_IksАй бұрын
  • ОО, не одному мне этот видос попался, тоже просто помотал и всё на этом

    @OlegShinder@OlegShinderАй бұрын
  • Ютуб ролик предлагал, но даже смореть не стал, нор от этого ролика не удержался - прочитав в названии про сову и глобус, а по факту краткую лекцию послушал, теперь сижу зеваю, надо такого на ночь всегда смотреть.

    @Ihor_Semenenko@Ihor_SemenenkoАй бұрын
  • Великий видос!)

    @umnedhacker567@umnedhacker567Ай бұрын
  • Один из видов полиморфизма -- перегрузка методов в нескольких формах, с разными аргументами и разной реализацией. В Факторио можно было бы хорошо это показать, вот несколько вариантов полиморфизма: 1. Один и тот же модуль даёт разные продукты в зависимости от поступивших аргументов. В этом видео, например, можно подавать в модуль медь и железо и получать первые (зелёные) платы, а если добавить нефть -- получатся уже вторые и третьи (красные и синие) платы. Хоть в начале на этот модуль потратишь больше ресурсов, но после появления нефти он без перестройки будет выполнять доп. функционал. В Факторио это невыгодно, а в программировании лишние строки кода есть не просят :) 2. Плавильный цех может выполнять одну функцию, но быть построен из печей разного вида. Имеем разные формы (реализации) класса, выполняющие одну функцию.

    @nikelsad@nikelsadАй бұрын
  • Это шедевр!

    @lastloony@lastloonyАй бұрын
  • О, я видел это видео, спасибо за обзор на него!

    @darkfrei2@darkfrei2Ай бұрын
  • Молодец!Не опустился до маргинализации и примитивизации темы,а мажоризировал до специальной терминологии😂

    @Ostrov1010@Ostrov1010Ай бұрын
  • Всё ещё достоин

    @user-mi1lp5wo2o@user-mi1lp5wo2oАй бұрын
  • Ура-ура, новые ролики, ведущие за собой потоки праведных рек гнева!

    @pronub9743@pronub9743Ай бұрын
    • Порождать ненависть - это наша работа!

      @fed1splay@fed1splayАй бұрын
  • За 11 минут раскидал по понятиям лучше, чем всякие гуру Пайтона и JS. 😎

    @romangolumbevskiy7268@romangolumbevskiy7268Ай бұрын
  • Ура, наконец то ФЕДОР ляпин про факторку!

    @sbknet5080@sbknet5080Ай бұрын
  • Круто, даже я понял)

    @user-pj1nk2xf7j@user-pj1nk2xf7jАй бұрын
  • А методичка будет? А сдача когда?

    @Adder_ai@Adder_aiАй бұрын
    • Ты контрольную вначале сдай!

      @fed1splay@fed1splayАй бұрын
  • Ох, как же у меня бомбануло тогда) Превьюшка шикарная😊

    @turbanov@turbanovАй бұрын
    • Сам не похвалишь)

      @fed1splay@fed1splayАй бұрын
  • И тебе с праздником Федор 😅

    @Kazakk47@Kazakk47Ай бұрын
  • Федя, привет. Давно не было видео, какие планы на ближайшее время. Нет желания перепройти боба и ангела? У тебя было, но там вообще что-то очень старое. Если решишь, то хотелось бы увидеть мегабазу на ситиблоках

    @mihailmitrofanov4304@mihailmitrofanov4304Ай бұрын
  • Во всех гайдах про ООП должно быть: "инкапсуляция - это изоляция", чтобы байтить хомячков на холивары

    @borismirzakhanyan3545@borismirzakhanyan3545Ай бұрын
    • Это сокрытие!

      @fed1splay@fed1splayАй бұрын
    • Вот и забайтил )))

      @TheTempterable@TheTempterableАй бұрын
    • ​@@fed1splayцитируя классика " Я могу оформить харчок в лицо любому кто говорит что инкапсуляция - это сокрытие, значит ли это что я харчок ?"

      @Rainbow_song@Rainbow_songАй бұрын
    • Можно взять определение инкапсуляции от майкоософт, и слово Hiding перевести как угодно) Hiding the internal state and functionality of an object and only allowing access through a public set of functions.

      @fed1splay@fed1splayАй бұрын
    • @@fed1splayсокрытие многим не нравится в том контексте, когда его имеют в виду именно как модификаторы доступа private. Если же речь про сокрытие внутреннего состояние или по-другому про связывание данных и операций над ними в едином целом (объекте), то всех все устраивает.

      @brinza888@brinza888Ай бұрын
  • В ооп я бы мог сделать так: создать класс ЦЕХ(мощность) с методом "забрать пластины". И создать функцию фабрика(кол-во цехов). И в функции "фабрика" в цикле насоздавать экземплеряов класса ЦЕХ. Подозреваю в фактории это не реализуемо. И все на самом деле сводится к модульному программированию.

    @mygodishe@mygodisheАй бұрын
  • Фига ссе, новый ролик, не гецмплецный, от Феди!!!! ❤❤❤❤

    @Leshocs1@Leshocs1Ай бұрын
  • Красавчик

    @alexmalov8023@alexmalov8023Ай бұрын
  • Всё понятно, спасибо! Прекрасная подача. При желании ты мог бы преподавать и всё получалось бы.

    @vladatom@vladatomАй бұрын
    • Ну уж нет)

      @fed1splay@fed1splayАй бұрын
    • @fed1splay 😅в идеальном мире)

      @vladatom@vladatomАй бұрын
  • какая же жесть.... Фёдор, давай ещё!!!11

    @areswild4735@areswild4735Ай бұрын
  • На наследовании моя сова начала кричать и отбрыкиваться, но в целом годно, натянул :D

    @multiprogramm@multiprogrammАй бұрын
    • А я хз, как чистое наследование как иерархию отношений на чисто игровых примерах показать) Кому надо - обратится к теории, и разберётся в различиях 😂

      @fed1splay@fed1splayАй бұрын
  • Кекнул с "Если говорить в общих ЧЕРТАХ". АВХХАХАХАХ

    @Fuzzy_HD@Fuzzy_HDАй бұрын
  • ДОЖДАЛСЯ!!!

    @joehart7382@joehart7382Ай бұрын
  • Сделай гайд по жд и LTN

    @user-ot3pc2xm4c@user-ot3pc2xm4cАй бұрын
  • классом я бы назвал чертежи, по которым мы строим цеха и прочее, а вот то, что мы построили по этим чертежам - объекты/экземпляры

    @roflin4ik@roflin4ikАй бұрын
  • 🔥

    @user-kx2fe2sg9o@user-kx2fe2sg9oАй бұрын
  • О, я тоже видел упомянутый ролик😁

    @WladySpb@WladySpbАй бұрын
  • "Испугался? Неее, я абсракцился" 1:44 ПЫСЫ: Опечатка на этом времени :)

    @TheRealFaner@TheRealFanerАй бұрын
    • Вряд ли это опечатка

      @AXSMEBEL@AXSMEBELАй бұрын
  • Аааа. Ну теперь то всё понятно!

    @Asmodian1990@Asmodian1990Ай бұрын
  • этож как сгореть должно было, чтобы даже ролик запилил)

    @compolomus9719@compolomus9719Ай бұрын
  • У меня тоже появлялась мысль, что между логистическими играми и программированием есть что-то общее (даже больше чем с играми где нужно писать код). Прикольно что есть люди, которые разделяют мои беды с башкой. Спасибо за видео! Теперь бессмысленный поток текста который можно не читать (: Даже среди программистов ведутся срачи про ООП (особенно про наследование). Немного отсебятины: Абстракция - это абстрагирование от лишнего. Практический пример: Нам нужно написать программу, которая сортирует яблоки по весу. Для этого программе НЕ нужно знать цвет яблока, размер, форму, где вырос, откуда привезли, сорт. Нам нужно знать только вес, от всего остального мы абстрагируемся. Это и есть абстракция в контексте программирования. Звучит банально и очевидно. Именно по этой причине большинство программистов игнорируют этот принцип и говорят что ООП состоит из 3 принципов, а не из 4. Определение абстракции из видео это скорее определение самого ООП, чем абстракции. Инкапсуляция. Это не простая тема. На практике может иметь не очевидные подводные камни из-за которых этот принцип очень легко нарушить. Инкапсуляция - это защита целостности данных. Есть проблема: у нас есть функция/процедура/метод который работает с данными. При чем данные могут быть не только поступающие из вне, но и внутренние, необходимые для работы метода. Если мы будем из вне менять внутренние данные метода, то это может привести к ошибке/поломке/неправильной работе метода. Одной из причин которая может привести к этой проблеме - глобальные переменные/данные. По этому, глобальные переменные запрещены. Главная цель инкапсуляции - защита целостности данных. Что, как говорилась ранее, не такая простая задача. Однажды нарушение инкапсуляции (из-за глобальных переменных) чуть не привело к войне. Ложно сработала система защиты. Так же была проблема в бортовом компьютере авто, когда блокировалась педаль тормоза. Определение инкапсуляции из видео в целом верная, но это тонкая грань, где легко нарушить инкапсуляцию и стереть грань между классом и структурой данных. Разница между классом и структурой - в классе, методы меняющие внутренние переменные/данные/состояния обязаны обладать сложной логикой, в ином случае это будет нарушением инкапсуляции и это будет уже скорее структурой, чем классом, ведь в таком методе нет никакого смысла. Пример: класс кошелек. Метод меняющий количество денег в кошельке обязан обладать сложной логикой проверяющей что: кошелек не может иметь отрицательное значение, иногда кошелек может иметь максимальное значение и т.д. В случае провала проверки метод обязан либо "кидать исключение"(ошибку), либо, если ситуация типичная, возвращать "код ошибки". В программировании коды ошибок запрещены, вместо них использую boolean(да, нет), либо enum(именованные коды ошибок). В таком случает метод должен именоваться с Try. Возвращать null(ничего) запрещено. Наследование. Популярная тема для срачей. Популярная трактовка наследования устарела и "правильное" определение будет звучать так: Наследование - конкретная реализация таких двух принципов как: полиморфизм и DRY (Запрет на дубляж/KopyPaste). Есть 2 проблемы: 1. Дубляж кода. Чтобы исправить одну ошибку, нужно сделать изменение в нескольких местах, что иногда бывает невозможно. 2. Дубляж кода в if-else. В программировании if-else почти запрещены, почти от всех них можно избавиться с помощью полиморфизма. Главная цель наследования - борьба с дубляжем. Наследование это скорее не принцип ООП, а конкретная реализация двух других принципов. У наследования есть альтернативы: интерфейсы; композиция/агрегация; в языке Go (Golang) есть альтернатива - "Встраивание"; в языке Rust - трейты. Так же есть принцип, который гласит "Composition over inheritance" (Композиция важнее наследования). Это отдельная тема для срачей. Мое мнение, "истина где-то посередине". В большинстве случаев использовать композицию, но не отказываться от наследования (хотя, если отказаться, ничего страшного не должно произойти, ведь есть альтернативы). Наследование - это очень сложный инструмент, неправильное использование которого может привести к проблемам, но в правильных руках проблем быть не должно. Определение наследование из видео вроде верная, но мне кажется что реализовать наследование в Факторио не возможно, если только через чертежи можно натянуто реализовать, а так это вроде возможно реализовать на уровне механик, идея для мода: вносишь изменение в чертеж(класс), и изменение автоматически применяется в дочерних чертежах(производных классах) и дроны начинают автоматически перестраивать старые заводы(объекты) реализующие чертеж. (Говорю как человек никогда не игравший в Факторио) Полиморфизм - способность метода работать с данными разных типов. Есть проблема описанная ранее - дубляж кода. Цель полиморфизма - борьба с ним. Тут мне сказать нечего. В видео все вроде верно.

    @muskonobim9477@muskonobim9477Ай бұрын
  • Отлично.

    @andre928@andre928Ай бұрын
  • Посмотрел минуту и уже лайк поставил!

    @MyXcompany@MyXcompanyАй бұрын
  • Что-то на сложном

    @user-tc9tq6cv5l@user-tc9tq6cv5lАй бұрын
  • 11/10 =))

    @ReeZee15@ReeZee15Ай бұрын
  • Жду когда в учебных заведениях основы программирования будут преподавать с помощью факторки. Ну и курсач - это твоя сохранёнка + подробное описание о применённых методах 😂

    @MaksimMelnik@MaksimMelnikАй бұрын
  • хорошая презентация, в повер поинт :)

    @RA7581@RA7581Ай бұрын
  • Что я тут делаю? Я же даже не программист... Но всё равно было занятно поглядеть и послушать разъяснения термина, что услышал впервые.

    @rinko6406@rinko6406Ай бұрын
  • Если простыми словами "моделирование сущностей", про себя думаю, ну нахер😂😂😂😂😂

    @antonbakaiev3781@antonbakaiev3781Ай бұрын
  • Красава

    @Demon-gr3ks@Demon-gr3ksАй бұрын
  • Такие же эмоции вызвало, как к месту твой ролик

    @danonishuk8961@danonishuk8961Ай бұрын
  • Я смотрю ролик, всё легко и понятно! После просмотра попросили пересказать суть. Так же я: "эээ, ну там что-то на программистском..."

    @AndreySold@AndreySoldАй бұрын
  • нормас. одобояем

    @user-ym9rc1qj7l@user-ym9rc1qj7lАй бұрын
  • Ха-ха, нормально пояснил. Я один тот первый видос не видел, как будто)

    @rainbowGrizz@rainbowGrizzАй бұрын
  • Зашёл на ютюб, в реках появилось видео про ООП в Факторио. Обновил страницу и в реках появилось твоё видео. Совпадение? Не думаю.

    @nekay9561@nekay9561Ай бұрын
  • *коммент для продвижения в алгоритмах ютуба* и благодарочка за отличное пояснение =^__^=

    @timbeopwonloginov3648@timbeopwonloginov3648Ай бұрын
  • Итак посмотрев это видео, как человек далекий от ООП, я не смог определиться я сова или глобус)))

    @user-vq4yz9jl1w@user-vq4yz9jl1wАй бұрын
  • Это интересно, ещё можно попробовать перенести какие то архитектурные паттерны в факторку. Я пробовал на ситиблоках 20х20 сделать слои как в clean архитектуре, но в итоге получилось очень не эффективно из-за ограниченной пропускной способности железной дороги. data - в моей реализации это была как бы база данных/сундуки, в которой были ситиблоки с производимыми и добываемыми ресурсами. domain - тут находились ситиблоки с производственными фабриками . ситиблок запрашивает ресурс из data слоя, обрабатывает его и отправляет обратно в data слой производимый ресурс. ui - это был абстрактный слой , который выводил количество ресурсов из data слоя, я это заменил модом для интерфейса. Но в итоге получилось очень не эффективно, большие проблемы с поездами и ltn модом. Еще пострадал геймплей, так не особо интересно играть, больше похоже на работу, но продумывать это все было интересно.

    @TheVidisi@TheVidisiАй бұрын
  • Чаще бы такие ролики попадались тебе)! Гляди и гайды вернуться)

    @gami29rus@gami29rusАй бұрын
    • Тебе лишь бы что-то, что будет пукан мне подпаливать 😂

      @fed1splay@fed1splayАй бұрын
    • Нужно самим делать кринжовые ролики, чтобы они попадались fed1splay и он не забрасывал канал

      @borismirzakhanyan3545@borismirzakhanyan3545Ай бұрын
    • @@fed1splay зато какой шикарный ролик вышел)

      @gami29rus@gami29rusАй бұрын
  • Молодец, а теперь поясни за функциональную парадигму в Факторио)

    @hedgehogsch.7270@hedgehogsch.7270Ай бұрын
  • к дизайну заводов в факторио хорошо было бы применено не ООП, а общие принципы дизайна систем - масштабирование, вертикальное, горизонтальное, автоскейлинг, кэширование, мониторинг, логгирование) это же собственно и есть игра про System Design тут ещё можно было бы снять ролик на примере аналогии факторио и книги по Теории Ограничений Систем (Элияху Голдратта) )

    @Ilvrak@IlvrakАй бұрын
  • Ребята а можно ссылку на ролик, от которого собственно пригорело?)

    @doctrof@doctrofАй бұрын
    • kzhead.info/sun/nax6k7eIZKWdYIk/bejne.html

      @alekseibird@alekseibirdАй бұрын
  • Я ни разу не програмист, но ролик тот попался, сложно было и я его не досмотрел. А тут даже чего-то понял)

    @kuzmich743@kuzmich743Ай бұрын
  • Федя, у тебя прекрасно получается объяснять. Я который в этом ничего не понимает, что то да понял! Продолжай в том же духе 👍 Видел у тебя на видосах, что ты любишь больше играть в ваниль факторио, чем с модами, но с таким объяснением хотел бы послушать разбор мода Реалистичные Реакторы. Уже 4 день бьюсь над строительством реактора и вообще че-то не получается, не понимаю как стабилизировать 2-а реактора. Один Чернобыль №2 получается)

    @yukiyasudo2356@yukiyasudo2356Ай бұрын
    • Я в SE уже 2й год играю 😂

      @fed1splay@fed1splayАй бұрын
    • @@fed1splay не ну а, :/ Понял. А в SE есть такой мод? (я про Реакторы)

      @yukiyasudo2356@yukiyasudo2356Ай бұрын
  • А где стрим чёрного экрана? Я чет найти не могу. Знаю, что Федя обещал. Не мог же он не выполнить обещание!

    @billgrover3130@billgrover3130Ай бұрын
  • 🤣🤣🤣🤣🤣🤣🤣🤣Феде реально пукан Бомбануло!первый раз доведённым вижу!

    @avalon1000@avalon1000Ай бұрын
  • Хотел сначала похейтить, когда увидел тайтл видео, но скажу, что сова натянута на глобус. Правда мне кажется, что те кто не знаком с темой, все же вряд ли что то поняли. Мне понравилось, спасибо, улыбнуло!

    @ruzarh@ruzarhАй бұрын
  • У понятиях, в нулевом элементе, ты написал "абсракция")))

    @sklyanskiy@sklyanskiyАй бұрын
  • то чуство когда пытался установить SFML а наткнулся в коментах на фёдора))

    @ProCto_Filya@ProCto_FilyaАй бұрын
  • Благое дело, инженер! С мракобесием боришься, просвещение в массы несёшь. Всеотец велел тебе грамоту выписать!

    @esusplay7127@esusplay7127Ай бұрын
  • Замечательная идея для видео. Было бы здорово еще разобраться является ли абстракция моделированием, в чем разница между состоянием и структурой, с каких пор композиция из реализации отношения "has-a" перешла в реализацию "is-a", что такое ассоциация и её отличия от наследования

    @maksimsemenov3248@maksimsemenov3248Ай бұрын
    • Я уже несколько раз отвечал про проблему представления отношений. Я не смог найти примера в игре для наследования. поэтому... :) Про абстракцию. Майкрософт, например, формулирует абстракцию так: Abstraction - Modeling the relevant attributes and interactions of entities as classes to define an abstract representation of a system.

      @fed1splay@fed1splayАй бұрын
  • Примеры наследования: Жуки и Броня как базоовые классы, Кусака, Плевака, как промежуточные, Маленький_Кусака - конкретный класс, ну и всякие абстрактные Топливо, Транспорт, Жидкость итд. И с ними вполне работает полиморфизм: например труба и или бочка принимает любого наследника жидкости (Нефть, Вода), а обратное неверно, вместо конкретной нефти воду подать нельзя

    @user-pd8vg1gd5z@user-pd8vg1gd5zАй бұрын
    • Как только ты обращаешься к прототипу или апи в целом, ты сразу же выходишь за рамки игрового представления :)

      @fed1splay@fed1splayАй бұрын
  • К сожалению, получилось отличное объяснение, которое будет просто понять лишь программистам и, одновременно, опытным игрокам в факторио. Домохозяйка и человек-сосед грустно проходят мимо.

    @undefinedundefined5924@undefinedundefined5924Ай бұрын
  • Лайк за Вована !

    @MultiPetrovi4@MultiPetrovi4Ай бұрын
    • Тысяча чертей!

      @fed1splay@fed1splayАй бұрын
  • Давай ещё уроки!

    @user-hd8oy9xp8m@user-hd8oy9xp8mАй бұрын
  • О, я смотрел тот видос, на скорости x2, быгыгы. Да, действительно, факторка там будто для кликбейта, чисто в конце, да и наследование странно визуализировано, хоть и сам аффтар ремарку сделал. Но для объяснения тем, кто не шарит, такое недопустимо

    @DERJNDZE@DERJNDZEАй бұрын
  • А для тех, кому не пришло в рекомендациях, можно ссылку на изначальное видео, от которого Фёдора бомбануло?

    @tassadarthehightemplar754@tassadarthehightemplar754Ай бұрын
  • Бальдэжное видэо. Хороший стримлер бамбид на интернет + интересный контент. Мог бы даже потеребонькать, но самовнушением приписал руке свойство абстракции и теперь она не стыкуется с реальными предметами. Буду теперь думать как это исправить. Главное - в процессе не приписать подобное свойство мозгу, а то ещё выйду из матрицы раньше времени, и не смогу пронаблюдать сей дурдом до логичного финала.

    @eirpile@eirpileАй бұрын
  • Когда автор того видеоролика про ООП показал заводы, на которые подаётся руда, которая переплавляется в пластины внутри цеха по производству модулей 1 уровня(и прочих), я понял что тот автор вообще не умеет применять ООП в factorio. И это действительно натягивание совы на глобус. А Фёдор рассказал очень грамотно, и самое главное с наглядными и простыми примерами. Я как программист одобряю всё показанное.

    @s-v-4857@s-v-4857Ай бұрын
  • Норм)) давай теперь принципы SOLID))

    @white73h4@white73h4Ай бұрын
  • Ля, мне тоже ролик тот попался, но отложил. Так что пойду тоже "посижу" и посмотрю)

    @zakarka-ju2ff@zakarka-ju2ffАй бұрын
    • Посидеть и отложить - это важно)

      @fed1splay@fed1splayАй бұрын
  • Надо ещё эксперименты провести с постройкой базы по различным паттернам программирования, адаптируя их под факторку

    @nphoenix@nphoenixАй бұрын
    • Там чуть ли не половину GoF паттернов можно при желании натянуть) Вопрос только, какой смысл

      @fed1splay@fed1splayАй бұрын
    • GoF - Globus on Filin? 😂

      @Adder_ai@Adder_aiАй бұрын
    • @@Adder_ai in

      @fed1splay@fed1splayАй бұрын
  • Блин, только сейчас увидел это видео) Тоже видел этого парня и решил сделать свое видео, но ты сделал это быстрее :((

    @Just-York@Just-YorkАй бұрын
  • Жду объяснение всего с++ на примере факторки за 2 часа от ждуна до сеньора

    @Desotterro@DesotterroАй бұрын
  • тоже набрал 10 космическую с того ролика 😂

    @IvanSemin@IvanSeminАй бұрын
  • Всё, бросаю факторку, пойду Кнута почитаю

    @user-on5gx9jv8n@user-on5gx9jv8nАй бұрын
    • 😂👍

      @fed1splay@fed1splayАй бұрын
  • У меня есть более экзотический пример. Рандомный чел из интернета советовал мне Факторио, чтобы разобраться с конкурентностью и параллелизмом в языках программирования

    @evgeniyevgeniy1372@evgeniyevgeniy1372Ай бұрын
  • Уважаемый Федор, здравствуйте! Зачем при объяснении, сути полиморфизма, была вставлена картинка Владимира, да ещё в купе с фразой, "в общих чертах"? Я пока ржал, не понял сути полиморфизма. По крайней мере, не понял ваших объяснений! Шутка зачётная! Спасибо за толковый контент!

    @user-yn8or6vf4d@user-yn8or6vf4dАй бұрын
KZhead