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

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

КОМЕНТАРІ • 354

  • @fed1splay
    @fed1splay  3 місяці тому +36

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

    • @seaways404
      @seaways404 3 місяці тому +8

      Сложна, сложна блять! Нихуя не понимаю!

    • @user-in8hp5vu6h
      @user-in8hp5vu6h 3 місяці тому

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

    • @fed1splay
      @fed1splay  3 місяці тому +3

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

    • @seaways404
      @seaways404 3 місяці тому +3

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

    • @MrBkorel
      @MrBkorel 3 місяці тому +3

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

  • @zhanluka
    @zhanluka 3 місяці тому +125

    Все: что-то там про 8-е марта.
    Федис: чисто мужицкое пояснение за ООП

    • @Prizrak_Leonis
      @Prizrak_Leonis 3 місяці тому +6

      Пятница, цифра 8 упала на бок возле дня недели и получилось "ооп"

  • @steveq1938
    @steveq1938 3 місяці тому +64

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

  • @EgoricNoc
    @EgoricNoc 3 місяці тому +153

    Когда нумеруешь элементы списка с нуля: -да я пограммист-

    • @olegzorin3911
      @olegzorin3911 3 місяці тому +2

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

    • @fed1splay
      @fed1splay  3 місяці тому +11

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

    • @olegzorin3911
      @olegzorin3911 3 місяці тому +2

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

    • @olegzorin3911
      @olegzorin3911 3 місяці тому +1

      @@fed1splayПосмотрел оригинал. Все правильно сделал, что снял этот ролик ))

    • @sylphur2320
      @sylphur2320 3 місяці тому +4

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

  • @bebra._.228
    @bebra._.228 3 місяці тому +80

    Как программист, подтверждаю всё сказанное. Сова на глобус натянута успешно

    • @dima_on
      @dima_on 3 місяці тому +5

      Да ладно. Про наследование херню же сказал.

    • @fed1splay
      @fed1splay  3 місяці тому +2

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

    • @user-yc7ow9wx7i
      @user-yc7ow9wx7i 3 місяці тому

      Про наследования фигня.

    • @shynekomaid
      @shynekomaid 3 місяці тому

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

    • @user-sr4nw2iu2u
      @user-sr4nw2iu2u 3 місяці тому +1

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

  • @World_Spectrator
    @World_Spectrator 3 місяці тому +36

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

    • @user-st6rz6du5n
      @user-st6rz6du5n 3 місяці тому +3

      Можно и на толчке под яблоней

    • @Prizrak_Leonis
      @Prizrak_Leonis 3 місяці тому +1

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

  • @user-eb2ir7wm9f
    @user-eb2ir7wm9f 3 місяці тому +46

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

    • @RA7581
      @RA7581 3 місяці тому

      надо почаще его испорченными котлетками кормить. :)

  • @casper608
    @casper608 3 місяці тому +29

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

    • @fed1splay
      @fed1splay  3 місяці тому

      Тем не менее, это сова на глобусе)

    • @casper608
      @casper608 3 місяці тому

      @@fed1splay Такова участь совы.

    • @p.k.r.7963
      @p.k.r.7963 3 місяці тому

      Тоже, только я выдержал больше, а потом проклацал.

    • @cirno_the_mediocrity
      @cirno_the_mediocrity 3 місяці тому

      работягам, приходящим с завода и идущим работать вечером на другой

  • @batpro7564
    @batpro7564 3 місяці тому +8

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

    • @Lexys3230
      @Lexys3230 3 місяці тому

      И Юре профессионалу))

  • @user-sd6ib5kd5x
    @user-sd6ib5kd5x 3 місяці тому +43

    О, мне буквально сегодня ролик этот попадался по ООП и факторку) полная шляпа

  • @groomgo
    @groomgo 3 місяці тому +10

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

  • @user-su5bf9cn9t
    @user-su5bf9cn9t 3 місяці тому +14

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

    • @user-uv8gc2gq3k
      @user-uv8gc2gq3k 3 місяці тому +1

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

    • @rar24
      @rar24 3 місяці тому +1

      главное столбы с опорами не путай

  • @tushkan9691
    @tushkan9691 3 місяці тому +1

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

  • @MrHalfint
    @MrHalfint 3 місяці тому +8

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

    • @fed1splay
      @fed1splay  3 місяці тому

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

    • @MrHalfint
      @MrHalfint 3 місяці тому

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

    • @fed1splay
      @fed1splay  3 місяці тому

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

    • @MrHalfint
      @MrHalfint 3 місяці тому

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

    • @fed1splay
      @fed1splay  3 місяці тому

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

  • @nagirov
    @nagirov 3 місяці тому

    Коротко, ёмко и по делу. Фёдор, это прекрасно!

  • @vinograd7857
    @vinograd7857 3 місяці тому +1

    Спасибо. Все круто описали.

  • @mister_Iks
    @mister_Iks 3 місяці тому

    Давно так не бомбило)) супер ролик))

  • @nikelsad
    @nikelsad 2 місяці тому

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

  • @Ihor_Semenenko
    @Ihor_Semenenko 3 місяці тому

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

  • @IYBeats
    @IYBeats 3 місяці тому +2

    Раскидал по фактам! Тоже выдавало в рекомендации программирование в Факторке

  • @rar24
    @rar24 3 місяці тому +2

    композиция и агрегация это про отношения экземпляров, а наследование - про переиспользование
    в видосе произошло натягивание)

  • @pronub9743
    @pronub9743 3 місяці тому +1

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

    • @fed1splay
      @fed1splay  3 місяці тому +2

      Порождать ненависть - это наша работа!

  • @turbanov
    @turbanov 3 місяці тому +1

    Ох, как же у меня бомбануло тогда) Превьюшка шикарная😊

    • @fed1splay
      @fed1splay  3 місяці тому

      Сам не похвалишь)

  • @darkfrei2
    @darkfrei2 3 місяці тому

    О, я видел это видео, спасибо за обзор на него!

  • @sbknet5080
    @sbknet5080 3 місяці тому

    Ура, наконец то ФЕДОР ляпин про факторку!

  • @mihailmitrofanov4304
    @mihailmitrofanov4304 3 місяці тому

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

  • @umnedhacker567
    @umnedhacker567 3 місяці тому

    Великий видос!)

  • @Kazakk47
    @Kazakk47 3 місяці тому +2

    И тебе с праздником Федор 😅

  • @areswild4735
    @areswild4735 3 місяці тому

    какая же жесть.... Фёдор, давай ещё!!!11

  • @Leshocs1
    @Leshocs1 3 місяці тому

    Фига ссе, новый ролик, не гецмплецный, от Феди!!!! ❤❤❤❤

  • @OlegShinder
    @OlegShinder 3 місяці тому +4

    ОО, не одному мне этот видос попался, тоже просто помотал и всё на этом

  • @Ostrov1010
    @Ostrov1010 2 місяці тому

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

  • @romangolumbevskiy7268
    @romangolumbevskiy7268 2 місяці тому

    За 11 минут раскидал по понятиям лучше, чем всякие гуру Пайтона и JS. 😎

  • @Adder_ai
    @Adder_ai 3 місяці тому +7

    А методичка будет? А сдача когда?

    • @fed1splay
      @fed1splay  3 місяці тому +2

      Ты контрольную вначале сдай!

  • @user-mi1lp5wo2o
    @user-mi1lp5wo2o 3 місяці тому +1

    Всё ещё достоин

  • @compolomus9719
    @compolomus9719 3 місяці тому

    этож как сгореть должно было, чтобы даже ролик запилил)

  • @roflin4ik
    @roflin4ik 3 місяці тому

    классом я бы назвал чертежи, по которым мы строим цеха и прочее, а вот то, что мы построили по этим чертежам - объекты/экземпляры

  • @user-pj1nk2xf7j
    @user-pj1nk2xf7j 2 місяці тому

    Круто, даже я понял)

  • @LE0p01d
    @LE0p01d Місяць тому

    7:50 Это Владимир! И он чертовски хорошо выглядит!

  • @muskonobim9477
    @muskonobim9477 2 місяці тому

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

  • @lastloony
    @lastloony 3 місяці тому

    Это шедевр!

  • @vladatom
    @vladatom 3 місяці тому +3

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

    • @fed1splay
      @fed1splay  3 місяці тому +1

      Ну уж нет)

    • @vladatom
      @vladatom 3 місяці тому

      @fed1splay 😅в идеальном мире)

  • @Triariy89
    @Triariy89 3 місяці тому +3

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

    • @fed1splay
      @fed1splay  3 місяці тому

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

    • @Triariy89
      @Triariy89 3 місяці тому

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

  • @MyXcompany
    @MyXcompany 3 місяці тому

    Посмотрел минуту и уже лайк поставил!

  • @RA7581
    @RA7581 3 місяці тому

    хорошая презентация, в повер поинт :)

  • @white73h4
    @white73h4 3 місяці тому

    Норм)) давай теперь принципы SOLID))

  • @yukiyasudo2356
    @yukiyasudo2356 2 місяці тому

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

    • @fed1splay
      @fed1splay  2 місяці тому

      Я в SE уже 2й год играю 😂

    • @yukiyasudo2356
      @yukiyasudo2356 2 місяці тому

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

  • @TheVidisi
    @TheVidisi 2 місяці тому

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

  • @danonishuk8961
    @danonishuk8961 3 місяці тому

    Такие же эмоции вызвало, как к месту твой ролик

  • @borismirzakhanyan3545
    @borismirzakhanyan3545 3 місяці тому +3

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

    • @fed1splay
      @fed1splay  3 місяці тому +7

      Это сокрытие!

    • @TheTempterable
      @TheTempterable 3 місяці тому

      Вот и забайтил )))

    • @Rainbow_song
      @Rainbow_song 3 місяці тому

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

    • @fed1splay
      @fed1splay  3 місяці тому +1

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

    • @brinza888
      @brinza888 3 місяці тому

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

  • @maksimsemenov3248
    @maksimsemenov3248 3 місяці тому

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

    • @fed1splay
      @fed1splay  3 місяці тому +1

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

  • @user-ri9gq9ox6k
    @user-ri9gq9ox6k 8 днів тому

    Сижу на МКС. Вижу зарево, у кого-то полыхнуло, а потом перевожу взгляд, а там кто-то сову на глобус натягивает методом объекте ориентированного программирования. Мне даже и в голову не пришло, что эти два события связанны.

  • @multiprogramm
    @multiprogramm 3 місяці тому

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

    • @fed1splay
      @fed1splay  3 місяці тому +1

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

  • @MaksimMelnik
    @MaksimMelnik 3 місяці тому

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

  • @WladySpb
    @WladySpb 3 місяці тому

    О, я тоже видел упомянутый ролик😁

  • @nekay9561
    @nekay9561 3 місяці тому

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

  • @Place_for_your_advertisement.
    @Place_for_your_advertisement. 2 місяці тому

    *Лучшая абстракция в Factorio - облачная архитектура, где "облако" - это - буквально - облако дронов,* которые растаскивают продукцию между логистическими сундуками, а каждый производственный юнит - просто производящее здание (!одно!) + логистические сундуки с манипуляторами (или, если нужна жидкость - одно производящее здание + баки + упаковщики/распаковщики бочек, которые опять же - при помощи логистических сундуков с манипуляторами и дронов - автоматически растаскиваются). Это имба.
    Основная фича такой архитектуры - убойная гибкость и масштабируемость, а равно и автобалансировка (пусть и субоптимальная) объёмов выпуска продукции. Развернуть ещё один чертёж - производственное здание заданного типа с снабжением "из воздуха" - элементарно, на любой локации, простым Ctrl+C - Ctrl+V, резко нарастив производство/переработку чего угодно. Добавить к существующему производству ещё какое-то? - Элементарно: постройка + сундуки + дроны всё принесут. Накосячить с организацией построек - не страшно: запросто всё можно перестроить, т.к. связей между зданиями - вообще никаких, скажем производство красных микросхем никак не привязано к производству зелёных, вся наличная продукция доступна глобально.
    Субоптимальная автобалансировка - особенно хороша тем, что вообще не напрягает мозг: сколько нужно выпускать одной продукции, для выпуска второй чесать репу не надо. Из "глобального" "облака" - берётся сколько нужно или всё, что есть. Поэтому достигается субоптимальное распределение во времени: если, скажем, для двух типов продукции нужны шестерёнки, то как только произведено нужное количество продукции первого типа, все мощности производства шестерёнок автоматически переключаются на снабжение производств продукции второго типа: продукция, необходимая в нескольких типах производств автоматически перераспределяется в пользу дефицитных при достижении насыщения в остальных, а не тупо валяется - как при жёстких связях с конвейерами. Плюс задействуется почти оптимальный маршрут. Особенно, если учесть, что конвейеры движутся с константной скоростью по некоторому маршруту (с обходом препятствий), а дроны летят по прямой - разница между путём и перемещением - школьный курс физики - налицо: конвейеры - путь, а дроны - перемещение (всегда по прямой из пункта A в Б).
    Недостатков, примерно 3:
    1) Требует много энергии и дронов
    2) Имеет тенденцию к деградации в отношении снабжения сырьём - обратная сторона кратчайшего маршрута при доставке: ближайший ресурс истощился -> следующий будет дальше
    3) Субоптимально, а не оптимально. Т.е. распределение близко к оптимальному но никогда не является оптимальным. Особенно остро это проявляется при обострении дефицита: во входных сундуках начинают накапливаться неполные объёмы, т.е. в нескольких производственных зданиях - суммарно - есть объём входных ресурсов для производства по заданному рецепту, но ни в одном из них - взятом в отдельности - он не является достаточным: если бы все эти ресурсы были на входе у одного здания - производство началось бы, а де-факто, оно не начинается, т.к. они по чуть-чуть распределены у всех.

    • @user-yw6nd4rq3i
      @user-yw6nd4rq3i 2 місяці тому

      фсе круто, но фпсу карачун. но на кластере из суперкомпуктеров наверно будет норм

  • @timbeopwonloginov3648
    @timbeopwonloginov3648 3 місяці тому

    *коммент для продвижения в алгоритмах ютуба* и благодарочка за отличное пояснение =^__^=

  • @Ilvrak
    @Ilvrak 3 місяці тому

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

  • @hedgehogsch.7270
    @hedgehogsch.7270 3 місяці тому

    Молодец, а теперь поясни за функциональную парадигму в Факторио)

  • @mygodishe
    @mygodishe 3 місяці тому +1

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

  • @user-ym9rc1qj7l
    @user-ym9rc1qj7l 3 місяці тому

    нормас. одобояем

  • @joehart7382
    @joehart7382 3 місяці тому

    ДОЖДАЛСЯ!!!

  • @alexmalov8023
    @alexmalov8023 3 місяці тому

    Красавчик

  • @tassadarthehightemplar754
    @tassadarthehightemplar754 3 місяці тому

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

  • @rainbowGrizz
    @rainbowGrizz 3 місяці тому

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

  • @user-hd8oy9xp8m
    @user-hd8oy9xp8m 3 місяці тому

    Давай ещё уроки!

  • @andre928
    @andre928 3 місяці тому

    Отлично.

  • @gami29rus
    @gami29rus 3 місяці тому +2

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

    • @fed1splay
      @fed1splay  3 місяці тому

      Тебе лишь бы что-то, что будет пукан мне подпаливать 😂

    • @borismirzakhanyan3545
      @borismirzakhanyan3545 3 місяці тому

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

    • @gami29rus
      @gami29rus 3 місяці тому

      @@fed1splay зато какой шикарный ролик вышел)

  • @user-ot3pc2xm4c
    @user-ot3pc2xm4c 2 місяці тому +1

    Сделай гайд по жд и LTN

  • @AndreySold
    @AndreySold 3 місяці тому

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

  • @Asmodian1990
    @Asmodian1990 3 місяці тому

    Аааа. Ну теперь то всё понятно!

  • @eirpile
    @eirpile 3 місяці тому

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

  • @Fuzzy_HD
    @Fuzzy_HD 2 місяці тому

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

  • @Demon-gr3ks
    @Demon-gr3ks 2 місяці тому

    Красава

  • @esusplay7127
    @esusplay7127 3 місяці тому

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

  • @kuzmich743
    @kuzmich743 3 місяці тому +1

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

  • @doctrof
    @doctrof 3 місяці тому

    Ребята а можно ссылку на ролик, от которого собственно пригорело?)

    • @alekseibird
      @alekseibird 3 місяці тому

      ua-cam.com/video/jHAcSP-sg-Q/v-deo.html

  • @rinko6406
    @rinko6406 3 місяці тому

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

  • @user-vq4yz9jl1w
    @user-vq4yz9jl1w 3 місяці тому

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

  • @ReeZee15
    @ReeZee15 3 місяці тому

    11/10 =))

  • @user-kx2fe2sg9o
    @user-kx2fe2sg9o 3 місяці тому +1

    🔥

  • @user-yn8or6vf4d
    @user-yn8or6vf4d 3 місяці тому

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

  • @avalon1000
    @avalon1000 3 місяці тому

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

  • @sklyanskiy
    @sklyanskiy 3 місяці тому

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

  • @undefinedundefined5924
    @undefinedundefined5924 3 місяці тому

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

  • @blezzrot4115
    @blezzrot4115 3 місяці тому

    теперь нужна парадигма ФП (функциональное программирование) в factorio

    • @user-tj9pc4gz9s
      @user-tj9pc4gz9s 2 місяці тому

      Вся фабрика суть - одна большая do-нотация, перелопачивающая на потоке монады-ресурсы?

  • @antonbakaiev
    @antonbakaiev 3 місяці тому +2

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

  • @billgrover3130
    @billgrover3130 3 місяці тому

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

  • @user-tc9tq6cv5l
    @user-tc9tq6cv5l 3 місяці тому +2

    Что-то на сложном

  • @DERJNDZE
    @DERJNDZE 3 місяці тому

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

  • @ruzarh
    @ruzarh 3 місяці тому

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

  • @TheRealFaner
    @TheRealFaner 3 місяці тому

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

    • @AXSMEBEL
      @AXSMEBEL 2 місяці тому

      Вряд ли это опечатка

  • @zuziarinechannel
    @zuziarinechannel 3 місяці тому

    Что за гора хайпа в моей любимой игре про макароны

  • @user-pd8vg1gd5z
    @user-pd8vg1gd5z 2 місяці тому

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

    • @fed1splay
      @fed1splay  2 місяці тому

      Как только ты обращаешься к прототипу или апи в целом, ты сразу же выходишь за рамки игрового представления :)

  • @nphoenix
    @nphoenix 3 місяці тому

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

    • @fed1splay
      @fed1splay  3 місяці тому +1

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

    • @Adder_ai
      @Adder_ai 3 місяці тому +6

      GoF - Globus on Filin? 😂

    • @fed1splay
      @fed1splay  3 місяці тому

      @@Adder_ai in

  • @s-v-4857
    @s-v-4857 3 місяці тому

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

  • @user-on5gx9jv8n
    @user-on5gx9jv8n 2 місяці тому

    Всё, бросаю факторку, пойду Кнута почитаю

  • @eeeeeeeee229
    @eeeeeeeee229 3 місяці тому

    давненько видосов не было

  • @IvanSemin
    @IvanSemin 3 місяці тому

    тоже набрал 10 космическую с того ролика 😂