Принципы ООП. 3. Полиморфизм

แชร์
ฝัง
  • เผยแพร่เมื่อ 8 มิ.ย. 2020
  • Всем привет! Это третий ролик из небольшого цикла лекций о принципах ООП. Сегодня поговорим о полиморфизме.
    Курсы для новичков:
    JAVA - bit.ly/2UnJInv
    JAVA Start - bit.ly/2XGYx6K
    Инструментарий JAVA - bit.ly/2MF6ZNB
    Automation QA (Java) - bit.ly/3f19VAi
    ANDROID - bit.ly/2AMSogz
    C#/.NET - bit.ly/2XKLGkg
    C# START - bit.ly/2XKkkuh
    PYTHON - bit.ly/2YhlmNl
    FRONT-END - bit.ly/3f4sGCZ
    WORDPRESS Developer - bit.ly/30nHtV1
    SALESFORCE Developer - bit.ly/2YhlwEr
    UI/UX дизайн - bit.ly/3cK6UCX
    Project management - bit.ly/2Yc458A
    Обучение на проекте - bit.ly/37b9AIy
    Продвинутые курсы для состоявшихся девелоперов:
    GRASP and GoF Design patterns - bit.ly/3dFSpkO
    Enterprise patterns - bit.ly/37kaHpy
    Сайт Foxminded: bit.ly/2ze9Fi3
    Foxminded в VK: foxminded
    Foxminded в ФБ: / foxmindedco
    FoxmindEd в Instagram: / foxminded.ua
    Мой Telegram: t.me/nemchinskiyOnBusiness

ความคิดเห็น • 303

  • @SergeyNemchinskiy
    @SergeyNemchinskiy  ปีที่แล้ว

    🦊Новый поток Advanced курса Enterprise Patterns стартует уже 1 февраля 2023 года ❗
    Регистрация - go.foxminded.ua/3GPXeYF

  • @expurple
    @expurple 4 ปีที่แล้ว +317

    Ценю работу над каналом, но поддержу мнение, что за столом было душевшее) И эхо в этой студии сильное

  • @dimitro.cardellini
    @dimitro.cardellini 4 ปีที่แล้ว +116

    По теме )
    .
    # Полиморфизм -- это возможность одного и того же алгоритма обрабатывать данные разных типов, независимо от того, какие это типы. Без проверок типов внутри и ветвления в зависимости от того, с каким конкретным типом алгоритм работает в конкретный момент времени.
    .
    # Мнимый полиморфизм (ad-hoc) -- это когда только создается видимость, что алгоритм полиморфный, но на самом деле в момент компиляции/транспайлинга программы либо происходит подстановка другого алгоритма, в зависимости от типа/ов переданных аргументов, либо происходит неявное преобразование типа/ов аргумента/ов. Важно то, что в результате есть один или больше алгоритмов, каждый из которых мономорфный -- т.е. работает с данными строго одного типа. Ярким примером является перегрузка функций/методов. Когда для обработки разных данных создаются разные функции, имеющие одно имя, но разную сигнатуру (имя + перечень типов аргументов). Такое возможно далеко не во всех языках программирования.
    .
    К такому типу полиморфизма относится и паттерн-матчинг, т.к. он сводится к совокупности мономорфных алгоритмов.
    .
    По способу достижения полиморфизма можно выделить:
    - полмиорфизм подтипов
    - структурный полиморфизм
    - параметрический полиморфизм
    .
    # Полиморфизм подтипов - это возможность алгоритма работать со всеми подтипами одного общего типа, опираясь на свойства общего типа (например, на то, что экземпляры общего типа, а значит и всех его подтипом, имеют определенный метод, с определенной сигнатурой). Наследование -- это частный случай создания Подтипа. Определяя интерфейс, создается тип. Реализация интерфейса -- это также создаение Подтипа, хоть наследование и не происходит.
    TypeScript и Flow работают именно с таким типом Полиморфизма, даже не смотря на то, что проверка того, является ли Тип подтипом Общего Типа осуществляется путем сопоставления структур Типа и Общего типа (без необходимости синтаксически декларировать такую связь).
    .
    # Структурный полиморфизм - это возможность алгоритма работать с объектами (значениями), игнорируя их тип и способ создания, и предполагая, что объекты/значения обладают нужными свойствами (например у объектов будет нужный метод с нужной сигнатурой). Его часто называют Утинным Полиморфизмом. Такой работат в JS. Собственно, я бы Структурный полиморфизм отнес к разновидностям Полиморфизма подтипов, но с оговоркой, что статической проверки типов нет.
    .
    # Параметрический полиморфизм -- это возможность алгоритма работать с данными "не названных" типов, которым присвоены абстрактные имена. Т.е. типы являются Параметрами алгоритма, равно, как и его аргументы. Это всеми нами гороче любимые Generic-и. Например: Array -- это пример Параметрического полиморфизма. Tree, List etc. etc.

    • @linkernick5379
      @linkernick5379 4 ปีที่แล้ว +3

      :+1:

    • @linkernick5379
      @linkernick5379 4 ปีที่แล้ว

      Только утиная типизацияи структурная типизация это не одно и то же. Например, автоматическую реализацию интерфейсов в Го некорректно называть утиной типизацией.

    • @haykmkrtchyan7093
      @haykmkrtchyan7093 2 ปีที่แล้ว

      Как по мне, в дженериках тоже после компиляции работаем с мономорфным типом и оно становится ad-hoc.

    • @dimitro.cardellini
      @dimitro.cardellini 2 ปีที่แล้ว +1

      ​@@haykmkrtchyan7093 думаю, это зависит от языка и от дженерика. Например, в TS на тип-параметр можно наложить органичение: соответствовать какому-либо интерфейсу и тогда все пойдет по полиморфизму подтипов. А может и зарезолвится в ad-hoc полиморфизм -- если это например: f = (a: T, b: T): T => a + b;
      В общем, параметрический полиморфизм -- это круто, полезно и вкусно.

    • @SergeySuper_Silver
      @SergeySuper_Silver 10 หลายเดือนก่อน +2

      Очень полезный комментарий. Спасибо)

  • @homo-ergaster
    @homo-ergaster 4 ปีที่แล้ว +190

    Белы фон вам не идет. Прежние видео были ламповее, чтоли.

    • @homo-ergaster
      @homo-ergaster 3 ปีที่แล้ว

      @kotto Почему частное? В последнем постанвлении правительства тоже про это говорится.

  • @linkernick5379
    @linkernick5379 4 ปีที่แล้ว +31

    В видео было много слов, но, к сожалению, некоторые из них правильные, а некоторые - нет. В итоге складывается впечатление, что полиморфизма всего два, и из них один какой-то неправильный (ad-hoc).
    Что лишний раз подтверждает тезис, что практика без теории __слепа__.
    Ниже определение полиморфизма более-менее соответствующее теории.
    Полиморфная переменная -- это переменная, которая может принимать значения разных типов данных.
    Полиморфная функция -- это функция, у которой хотя бы один аргумент является полиморфной переменной (не забываем о методах, которые суть функции, и у которых есть неявный первый параметр this).
    Полиморфная функция бывает двух видов.
    Ad-hoc полиморфизм - когда функция ведет себя по разному для аргументов разных типов. Функция "нарисовать" - рисует по разному разные геометрические фигуры.
    Параметрический полиморфизм - когда функция ведет себя одинаково для аргументов разных типов, нет информации о настоящем типе и значение любого типа может быть передано в качестве аргумента. Пример - функция "положить элемент в контейнер". Заметим, что subtype полиморфизм (который в ООП называют просто полиморфизмом, когда вместо ссылки на базовый класс можно передать ссылку на производный) __НЕ__ является параметрическим полиморфизмом, потому что тип известен (тип базового класса).
    Иногда выделяют статический и динамический полиморфизм - когда тип разрешается во время компиляции, или во время выполнения.
    Теперь можно рассмотреть частные случаи:
    1. _Преобразование чисел_, когда функция принимает double, туда иногда можно передать целые числа и float, этот вид полиморфизма часто называют automatic coerce, в разных языках делается по-разному, скажем в OCaml его вообще нет и нужны явные преобразования.
    2. _Перегрузка функций_, когда одно имя функции используется для аргументов разных типов и количества аргументов. Используется в постпроцедурных ОО языках, таких как С++, Java, C#. В функциональных языках отсутствует, поскольку ломает вывод типов (впрочем в Haskell нетрудно сделать аналог перегрузки).
    3. _Параметрический полиморфизм_, когда функция получает тип (или несколько типов в качестве параметров), например `foo(a: T): T` - функция имеет один параметр-тип и один полиморфный параметр, который связан с этим типом. Такой полиморфизм известен под именем generics, и присутствует под этим именем в Java, Kotlin, C#, Scala и может быть в будущем Go :-) Почему в Scala этот вид полиморфизма значительно мощнее? Потому что на параметры-типы можно накладывать очень детальные ограничения, например:
    def lift[F[_]: Functor]: F[A] => F[B]
    здесь на параметр F накладывается ограничение, что F - это тип с параметром, и подтип типа Functor (который тоже параметризован, но это можно узнать посмотрев его определение).
    В Haskell (или ещё более далёком от мейнстрима Idris) ограничения на типы могут быть ещё более детальные, и сами параметры-типы можно связать ограничениями, и это всё позволяет отсеивать компилятором огромное количество ошибок.
    Таким образом, ограничения позволяют прокинуть мостик между параметрическим и ad-hoc полиморфизмом и выбирать какой-то нужный вам баланс. Впервые большой шаг к этом сделал Филипп Вадлер в работе "How to make ad-hoc polymorphism less ad hoc" users.csc.calpoly.edu/~akeen/courses/csc530/references/wadler.pdf
    4. Наконец _полиморфизм подтипа_ - это вид ad-hoc полиморфизма, когда первый неявный параметр this имеет тип базового класса, диспетчеризация происходит в рантайме, обычно с помощью VTable. С точки зрения теории довольно слабый вид полиморфизма, поскольку ограничение на тип лишь одно, типом базового класса снизу. Естественно, делает невозможным точный вывод типов, не позволяет диспетчеризоваться по нескольким типам параметров, и по типу возвращаемого значения, вынуждает делать нетипобезопасные преобразования (т.н. downcasting).
    5. Также есть ещё row polymorphism, когда селектор поля, например .user в разных записях может выступать как самостоятельное значение, передаваться в параметры и использоваться в полиморфных контекстах, а будучи применённый к разным значениям, скажем account и book возвращает соответственно account.user и book.user. Чем-то напоминает структурные типы, но гибче.
    6. Есть ещё много других, таких как family polimorphism, но это уже глубины теории типов, до практики они ещё не дошли.
    Итог. Сергей Немчинский конечно хороший дядечка, позитивный и харизматичный, но не стоит верить всему, что он говорит без оглядки, нужно проверять сведения и читать хорошие книжки, скажем Пирса "Типы в языках программирования".

    • @eligolin9947
      @eligolin9947 3 ปีที่แล้ว

      Спасибо что успакоели меня (Scala кодера) а то прям кровь из ушей лилась.
      Думал сам закаментировать но решил сначала адекватный коммент поискать.
      Ещё + вам в догонку.

    • @handsupslowly
      @handsupslowly 3 ปีที่แล้ว +2

      @DASSDED ну что спросили ?)

  • @user-bk6ok6do9i
    @user-bk6ok6do9i 4 ปีที่แล้ว +45

    Дублировать текстом вещи о которых идет речь есть очень хорошо. Примеры бы с кодом какие в виде призентации на фоне. А так супер!)

  • @yana7j
    @yana7j 4 ปีที่แล้ว +196

    прикольный формат, но прошлый был, как-то, более по-домашнему, более уютно)

    • @user-wd4mo4vl3h
      @user-wd4mo4vl3h 4 ปีที่แล้ว +6

      Согласен, кажется сейчас домашний формат в тренде

    • @syoritohatsuki
      @syoritohatsuki 4 ปีที่แล้ว +1

      Кря

  • @zabiyaka785
    @zabiyaka785 4 ปีที่แล้ว +2

    Ой, сколько новых видео!!! Сергей, ставлю лайк даже не посмотрев (сейчас исправлю эту ошибку), так сказать заочно! Большое вам спасибо! Долго отсутствовал, сейчас буду смотреть каждое новое для меня видео.

  • @leetovetz
    @leetovetz 4 ปีที่แล้ว +46

    потерялась ламповость видео. теперь сухой профессионализм.
    двоякое чувство)))

  • @Vanderflit.
    @Vanderflit. 4 ปีที่แล้ว +14

    За столом как то интересней и привычней. А еще на столе стоит великолепная кружка!

  • @nmodonov
    @nmodonov 3 ปีที่แล้ว +11

    Блин. А про if-то мысль реально хороша. Объяснение полиморфизма через нее пока самое доступное на моей памяти.
    Было бы круто добавить короткий пример замены if-а или оставить ссылку на него.

    • @vitall789
      @vitall789 ปีที่แล้ว

      Да сложно представить истинный полиморфизм заменяющий IFы без перегрузки или нарушения инкапсуляции - первого принципа ООП.
      Разве только приходит в голову методика разыменования аргумента в метод базового класса или что-то подобное!
      ПС: Возможно перегрузка методов-интерфейса хороший вариант решения данной проблемы и я так понимаю что это не будет считаться как ad-hoc полиморфизм.

  • @masturch99f
    @masturch99f 4 ปีที่แล้ว +1

    Отличный формат! Всё очень лаконично и очень информативно!

  • @egorsank4791
    @egorsank4791 3 ปีที่แล้ว +13

    Спасибо!
    Я из тех кому все равно на фон, звук, одежду и прочее.
    Содержание - Самое главное!
    Спасибо за содержание!
    P.S. Мне во всех ваших видео нравится антураж

  • @bim1430
    @bim1430 4 ปีที่แล้ว +43

    Во фронтэнде - новый формат видео, а в бэкэнде релокация офиса ? =)

  • @maximgribencicov3619
    @maximgribencicov3619 3 ปีที่แล้ว +1

    Очень полезные и информативные ролики получаются у вас. Хотим больше "обучалок"

  • @user-kl3mt7rl2n
    @user-kl3mt7rl2n 4 ปีที่แล้ว +1

    Очень крутой формат, намного лучше предыдущего.

  • @dmitrinikolaev6986
    @dmitrinikolaev6986 4 ปีที่แล้ว +1

    Аааааа как же не привычно) но видео классные! Спасибо!

  • @itcloudguy
    @itcloudguy 4 ปีที่แล้ว +48

    Советую поработать над звуком. В новой обстановке эхо от стен напрягает.

    • @leonidkorkulenko4838
      @leonidkorkulenko4838 4 ปีที่แล้ว

      Плюсую. Со звуком точно нужно что то делать. Эхо очень жёсткое.

    • @leonidkorkulenko4838
      @leonidkorkulenko4838 4 ปีที่แล้ว

      И кстати. В целом формат очень классный. Двигаетесь в правильном направлении. Но звук поправить надо =)

  • @eugenstakhursky9604
    @eugenstakhursky9604 4 ปีที่แล้ว +24

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

  • @mathew9794
    @mathew9794 ปีที่แล้ว

    Кратко, ясно, понятно. Благодарю.

  • @Avram_Vitalik
    @Avram_Vitalik 2 ปีที่แล้ว

    Приятно смотреть ваш канал. Спасибо за хороший контент. Успехов.

  • @alexsss3851
    @alexsss3851 4 ปีที่แล้ว

    Отлично! Спасибо за труд!

  • @user-lg3nm9qt9z
    @user-lg3nm9qt9z 4 ปีที่แล้ว

    Новый формат - мне зашёл )

  • @romansharpe1131
    @romansharpe1131 4 ปีที่แล้ว

    Ну наконец то мой любимый полиморхвизм)

  • @neuralnetwork.2807
    @neuralnetwork.2807 4 ปีที่แล้ว +5

    Мне новый формат даже больше понравился, чем старый

  • @borismatashin5891
    @borismatashin5891 3 ปีที่แล้ว +1

    Благодарность за coding by exception!

  • @David-jy1fm
    @David-jy1fm 3 ปีที่แล้ว

    Ну прям очень-очень интересно слушать. Хоть ничего и не понимаю ))))

  • @shane2899
    @shane2899 4 ปีที่แล้ว +2

    Новый формат супер! Все внимание фокусируется о том, что говорит диктор☝🏻 Возможно, для лучшего понимания полиморфизма можно было бы добавить несложные схемы или код, чтоб акустическся информация еще визуально подкреплялась. Сергей, спасибо Вам!

  • @user-wl7gt8qc9s
    @user-wl7gt8qc9s ปีที่แล้ว

    Сергію, дякую! Не додам нічого нового до того, що сказано іншими, просто урок вийшов традиційно змістовним і цікавим і заслуговує на "свіжий" коментар))

  • @benedikt7777
    @benedikt7777 4 ปีที่แล้ว +12

    По поводу ИФов и тему с простыней хотелось бы увидеть пример кода))

    • @MaxKyivUa
      @MaxKyivUa 8 หลายเดือนก่อน

      chat GPT в помощь. Я только что у него попросил переписать мой метод где много ИФов было, осталось только понять ответ ))

  • @arthurfonzerelli6484
    @arthurfonzerelli6484 4 ปีที่แล้ว +74

    Фон лучше убрать - верните как было)

  • @doom678
    @doom678 3 ปีที่แล้ว

    Смотрю уже 30 ролик, ничего не понимаю но очень интересно!

  • @gilzaa
    @gilzaa 4 ปีที่แล้ว +1

    Вы молодец. Достаточно давно слежу за вашим каналом. Даже 2 месяца был на проекте в вашей школе. Надеюсь, даже спустя неделю, вы прочитаете этот коммент. Хотелось бы и мне высказать свое мнение по поводу видео, хотя обычно комменты не оставляю.
    С фоном лампово и по домашнему, без фона - динамически и по современному. Больше всего понравились тезисные подпись. С ними как-то проще воспринимается информация. Можно подписи оставить (пофиг на фон))

  • @user-vi5yp4kx1f
    @user-vi5yp4kx1f 4 ปีที่แล้ว +1

    +1 за новый формат

  • @serhiiho
    @serhiiho 4 ปีที่แล้ว +2

    Не хватает зарисовочек на белом фоне, чтобы визуально было понятно на примере, а так как радио послушал, но в целом как всегда супер;) спасибо за видео

  • @descar1626
    @descar1626 4 ปีที่แล้ว +16

    разделение видео на части - хорошая идея. Использовать для этого пятисекундные вставки с логотипом выглядит растягиванием хронометража. Они одинаковые и скучные. Можно хотя бы названия этих частей туда вставлять

    • @user-us5uf9tt8i
      @user-us5uf9tt8i 4 ปีที่แล้ว +1

      а лучше вообще убрать

    • @NummeSpnet
      @NummeSpnet 4 ปีที่แล้ว

      название частей в разделении хорошая идея, а еще под видео сделать "оглавление" с ссылками на эти самые части видео.

    • @iex32
      @iex32 4 ปีที่แล้ว +2

      а можно на эти заставки вставлять что-то интересное, трейлеры фильмов например

  • @user-iq2ic3mh9z
    @user-iq2ic3mh9z 4 ปีที่แล้ว +26

    Сергей, судя по фону, вы устроились в Apple, поздравляю!

    • @goodvin8554
      @goodvin8554 4 ปีที่แล้ว +1

      Это был бы шаг назад. У Сергея своя фирма.

    • @mannas273
      @mannas273 4 ปีที่แล้ว +1

      @Volodymyr Volodymyr ээээммим всегда. Если там не условия как у шаха

  • @Youtube123Viewer
    @Youtube123Viewer 4 ปีที่แล้ว +6

    Не всегда нужно использовать наследование для достижения параметрического полиморфизма. Есть языки, в которых импелементация интерфейсов не требует наследования (Rust, Go, Typescript). Есть дженерики и темплейты. Есть Duck Typing и динамические языки. Конечно, это не значит, что не нужно использовать наследование, но его ограниченность нужно понимать и стараться избегать.

  • @user-hl7zj8fc7u
    @user-hl7zj8fc7u 4 ปีที่แล้ว

    Лайк сразу, новый формат понравился, с примерами кода думаю было бы лучше, а в общем всё кратко и по делу. Спасибо большое)))

    • @SergeyNemchinskiy
      @SergeyNemchinskiy  4 ปีที่แล้ว +1

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

    • @user-hl7zj8fc7u
      @user-hl7zj8fc7u 4 ปีที่แล้ว

      @@SergeyNemchinskiy Как говорится "не попробуешь - не узнаешь")))

  • @shutterradio
    @shutterradio 4 ปีที่แล้ว +3

    Новый формат - супер! Осталось только английских субтитров добавить чтоб весь мир смотрел :)

    • @maadinpavliev9565
      @maadinpavliev9565 4 ปีที่แล้ว

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

  • @IlyaIstomin
    @IlyaIstomin 4 ปีที่แล้ว

    Sergey, плакал в голосину, когда узнал, что не я один отделением состояния от поведения озадачен.
    Пробовал даже чинить подобное упущение, добавляя для каждого сервиса-интерфейса(со свеой иерархией) "сервис-маршрутизатор"(не знаю как иначе назвать), который, в зависимости от получаемой имплементации доменной сущности(с общим интерфейсом) делегирует соответствующему обработчику(ну и результаты мержит).

  • @user-iz2jo8cz9w
    @user-iz2jo8cz9w 4 ปีที่แล้ว

    Белый фу, только темная тема!))) Сергей, спасибо

  • @user-gs7ro3tl9t
    @user-gs7ro3tl9t 4 ปีที่แล้ว +1

    По моему опыту, это наиболее полное и понятное объяснение полиморфизма на русской ютубе. И за инфу про объекты без поведения и сервисы без состояния отдельное спасибо, это действительно имеет место быть и на это стоит акцентировать внимание, чтобы понимать современные реалии проектирования ПО.

  • @VseNikiSukaZanyaty
    @VseNikiSukaZanyaty 4 ปีที่แล้ว +3

    Можете тогда рассказать, что понимают под абстракцией, почему считают принципом ооп, и почему это не принцип ооп?

  • @dmitrymenshov8694
    @dmitrymenshov8694 4 ปีที่แล้ว +1

    Сергей, запишите видео почему вы перешли с C++ на Java. Я постигаю плюсы, очень нравится, но очень сложно=), потому крайне хотелось бы послушать вас. Благодарю!

  • @NikitaUtochkin
    @NikitaUtochkin 4 ปีที่แล้ว

    Есть вопрос по поводу применения вставок с помощью JNI. Кроме самого логичного кейса использования сишных и ассемблерных вставок в Android приложениях, это вообще имеет место быть? Просто это рушит весь принцип jvm и тд. Какие кейсы использования можете привести?

  • @sergeyivanin7904
    @sergeyivanin7904 4 ปีที่แล้ว

    А мне понравилось. Полиморфизм серьезная тема, и белый фон как бы говорит что нужно внимательно слушать Сергея а не смотреть что на столе лежит

  • @lexlotar4847
    @lexlotar4847 3 ปีที่แล้ว

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

  • @antoneltonij8362
    @antoneltonij8362 3 ปีที่แล้ว

    Хороший эксперимент с фоном. За столом было душевнее.
    Но с белым фотом можно выводить дополнительную информацию.
    Единственное я бы добавил больше информации. И когда она появляется, сдвигал спикера больше в бок

  • @developmobi3529
    @developmobi3529 3 ปีที่แล้ว

    Первую очередь спасибо за видео. Было бы лучше показать + примеры как работает полифогизм :-)

  • @liamsmith7052
    @liamsmith7052 4 ปีที่แล้ว

    Спасибо. Давайте про Event Sourcing, DDD и CQRS.

  • @andriyvandam5978
    @andriyvandam5978 3 ปีที่แล้ว

    Сергей, здраствуйте.... бил би очень благодарен за какой нибудь конкретний пример замени if полиморфизмом, или если у вас есть уже такое видео, то буду благодарен за линку, а то чтото никак в голове такой код не виресовуется....
    Спасибо

  • @sergeyshestakov4936
    @sergeyshestakov4936 ปีที่แล้ว

    спасибо!

  • @user-jk9tp5qi1s
    @user-jk9tp5qi1s 4 ปีที่แล้ว +1

    Сергей, отличный формат, но мне кажется слишком много наездов/увеличения камеры и возможно лучше использовать текст либо при наезде либо нет) Спасибо за видео

  • @vladislavpavlov35
    @vladislavpavlov35 3 ปีที่แล้ว +1

    Не плохо бы побороть эхо и использовать пастельные тона в качестве фона. Спасибо за информацию)

  • @kirillromanov1184
    @kirillromanov1184 4 ปีที่แล้ว

    Идея с новым фоном хорошая. Возможно стоит попробовать снимать стоя.

  • @ilya_123__
    @ilya_123__ ปีที่แล้ว

    спасибо

  • @juliusmalkov9620
    @juliusmalkov9620 4 ปีที่แล้ว

    Прикольная смена, но я ещё не проверял просмотр ночью в темноте) но пока нравится весь формат - по современному, что ли)

    • @SergeyNemchinskiy
      @SergeyNemchinskiy  4 ปีที่แล้ว

      мы именно для этого и старались

  • @HaiIag
    @HaiIag 4 ปีที่แล้ว +2

    Рівень відео зростає, що не може не радувати!

  • @StNizelan_UA
    @StNizelan_UA 4 ปีที่แล้ว +8

    Вернити уютный офис :с
    холодно как то в вашей студии :С

  • @andrey12277
    @andrey12277 4 ปีที่แล้ว +1

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

    • @SergeyNemchinskiy
      @SergeyNemchinskiy  4 ปีที่แล้ว +2

      хорошо :) А вы почему не подписались? :)

  • @DM14Andre
    @DM14Andre 4 ปีที่แล้ว +24

    Эхо мешает сильно

  • @nazarfernos184
    @nazarfernos184 4 ปีที่แล้ว +2

    Один раз захлох на этом вопросе на собеседовании. Спасибо за Ваш труд

  • @user-cx2cm5yv4i
    @user-cx2cm5yv4i 3 ปีที่แล้ว

    Дуже дякую!

  • @AllWayToDeath
    @AllWayToDeath 4 ปีที่แล้ว +11

    Новый формат интересный, но постоянные заставки для склейки кусков видео лишние.
    ИМХО

    • @VENTO_off
      @VENTO_off 4 ปีที่แล้ว +2

      Или хотя бы сделать время проигрывания заставки быстрее, но а так да - лишнее

  • @52352.
    @52352. 4 ปีที่แล้ว +1

    спасибо очень интересно. Побольше информации для чайников от архитектора как устроен компьютер интернет сайты и серверы..
    читаешь порой вакансии и запутаешься в терминах разжуйте пожалуйста в видео вакансии с hh.ru например думаю многим будет интересно:"
    Минимум 2 года опыта коммерческой разработки ПО.
    Хорошее знание теор. минимума computer science.
    Хорошее владение языком Java, опыт серверной разработки на нем.
    Знания и опыт многопоточного программирования.
    Знакомство с JavaScript, опыт разработки браузерных приложений
    Опыт работы с Java 8
    Знакомство с продуктами Atlassian.
    Знакомство с функциональными языками программирования, FRP.
    Писать unit-тесты, в отдельных случаях - интеграционные тесты.
    Structure - Atlassian SDK, Java, REST, JavaScript, jQuery, HTML5. Рабочее окружение - IntelliJ IDEA, Git, Maven, TeamCity, BitBucket Server, Docker. Тесты серверного кода пишутся на Groovy / Spock, клиентского - на JavaScript / QUnit.
    Мы широко используем Structure
    новый важный функционал покрывается unit-тестами;
    Code Review у нас обязателен для каждого изменения;
    подробное ручное тестирование готовых сборок.

  • @pasharukin8346
    @pasharukin8346 4 ปีที่แล้ว

    круто с фоном

  • @liftoman_777
    @liftoman_777 หลายเดือนก่อน

    В ардуиноIDE есть патерны?

  • @user-gs9ly7qo3u
    @user-gs9ly7qo3u 4 ปีที่แล้ว

    Разве при перегрузке методы называются по разному? Или это просто оговорка?

  • @SlavaCh
    @SlavaCh 4 ปีที่แล้ว

    Корректным ли будет такое определение: Полиморфизм это способность объектов вести себя по разному в зависимости от принимаемых ими методов?

    • @imho10
      @imho10 3 ปีที่แล้ว

      Вы главное лайки ставьте. Тут не до ваших вопросов.

  • @arthur.v.babayan
    @arthur.v.babayan ปีที่แล้ว

    А интересно, функции с перегрузкой, не if используют ???

  • @user-qw9lw1rj3e
    @user-qw9lw1rj3e 4 ปีที่แล้ว +10

    Кажется вы перепутали Parametric polymorphism (параметрийчний полиморфизм - на нем построены дженерики) с Subtype polymorphism (полиформизм на основе подтипов).

    • @user-xu5po3rk5t
      @user-xu5po3rk5t 3 ปีที่แล้ว +3

      Он перепутал полиморфизм в информатике, с полиморфизмом в ООП.
      Чувак полный профан.

    • @richarddaniel7088
      @richarddaniel7088 3 ปีที่แล้ว

      Ничего он не перепутал. Он все правильно сказал.

    • @richarddaniel7088
      @richarddaniel7088 3 ปีที่แล้ว

      @@user-xu5po3rk5t ахаха, то есть полиморфизм в ООП по-твоему существует отдельно от информатики?

    • @user-xu5po3rk5t
      @user-xu5po3rk5t 3 ปีที่แล้ว

      Прикинь, да.

    • @user-xu5po3rk5t
      @user-xu5po3rk5t 3 ปีที่แล้ว

      Я смотрю он тут не один такой.

  • @mike-aaa
    @mike-aaa 2 ปีที่แล้ว +6

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

  • @AllWayToDeath
    @AllWayToDeath 4 ปีที่แล้ว

    Можно послушать про паттерны, чтобы больше не затыкать уши?
    Или такое видео уже есть на канале?

  • @eidenrid7735
    @eidenrid7735 3 ปีที่แล้ว

    Зашел только для того, чтобы убедиться что автора всё еще зовут Сергей Немчинский. Убедился, теперь можно снова спать спокойно

  • @Ivan-yp8nq
    @Ivan-yp8nq 4 ปีที่แล้ว +11

    Спасибо за интересное видео👍
    Но возможно стоит включить тёмную тему

  • @levp1801
    @levp1801 3 ปีที่แล้ว

    спасибо, помогло на собесе

  • @user-zr9no8hv8g
    @user-zr9no8hv8g 4 ปีที่แล้ว +1

    Слышать всегда интересно! но эхо действительно мешает и фон белый асоциация с больницей, а вот без стола смотритесь солиднее:)))

  • @serggio88888
    @serggio88888 4 ปีที่แล้ว

    Ну молодца

  • @SuperLinuxoid
    @SuperLinuxoid ปีที่แล้ว

    дякую!!!

  • @igor_knv
    @igor_knv 3 ปีที่แล้ว

    Запишите плиз видео, почему абстракция - не принцип ооп.

  • @onebytesiteit30-75
    @onebytesiteit30-75 4 ปีที่แล้ว +1

    самый топовый канал. Немного музычка отвлекает на фоне
    Благодарю за информацию . Поздравляю скоро 100 000 подписчиков .
    У меня не большой канал но тоже стараюсь для начинающих в айти делать хорошие видео .
    Если что заглядывайте надеюсь понравится я очень стараюсь .

  • @ValerianAndStuff
    @ValerianAndStuff 4 ปีที่แล้ว

    Существует ли ооп язык без ифов?

  • @klayd4009
    @klayd4009 4 ปีที่แล้ว

    Сергей классный формат, но можете ответить на вопрос: "В какой ОС лучше всего писать код? "

    • @SergeyNemchinskiy
      @SergeyNemchinskiy  4 ปีที่แล้ว

      как вам удобнее рабоотать

  • @user-um6fj1us4c
    @user-um6fj1us4c 4 ปีที่แล้ว

    Сергей, спасибо за ваши видео. Как вы правильно заметили, полезно не только новичкам, но и опытным. Мне полезно в том, что я подмечаю моменты, которые для меня казались сами собой разумеющимися, но по видео и по комментариям вижу, что это не так, и теперь, при общении с младшими коллегами, я уточняю их понимание этих вопросов.
    А не думали ли вы снять видео про абстракцию не как принцип ООП, а как одного из "принципов" здравого смысла? Я довольно долго работал разработчиком электронных устройств, меньше - разработчиком микроэлектронных устройств, довольно много работал со структурным программированием, занимался планированием работ, сейчас довольно много работ с ООП. И везде нужны абстракции. Я на этих примерах объясняю молодым коллегам, как пользоваться абстрагированием. Если вы заинтересуетесь данной идеей, могу помочь с применением абстрагирования вне программирования, чтобы сэкономить вам время.

  • @fife3366
    @fife3366 4 ปีที่แล้ว

    Мне лично у вас в кабинете больше нравилось)

  • @Maloj2006
    @Maloj2006 4 ปีที่แล้ว

    Запиши про абстракцию все таки, только не в ключе ООП, а своё мнение

  • @haykmkrtchyan7093
    @haykmkrtchyan7093 2 ปีที่แล้ว

    Поли - Много, морфизм - форм. Полиморфизм - много форм.

  • @grommaks
    @grommaks 4 ปีที่แล้ว

    Эхо сильное, а так формат хороший :)только в старом формате было прикольно наблюдать за новыми вещами на столе и в фоне...
    Так через интерфейсы реализуется полиморфизм...зачем наследование 🙄

  • @user-qn1nq2bb5u
    @user-qn1nq2bb5u 3 ปีที่แล้ว

    Ещё 1 взрыв мозга от той самой мысли Т_Т

  • @user-rh8zt3zo2z
    @user-rh8zt3zo2z 3 ปีที่แล้ว

    Что такое - паттерн? Простым языком пожалуйста. И если будет не сложно на нескольких примерах. Заранее спасибо.

    • @imho10
      @imho10 3 ปีที่แล้ว

      погуглить не судьба? я и то погуглил

  • @iyhan1987
    @iyhan1987 4 ปีที่แล้ว +4

    Ну, если не про абстракцию,может про MVC? :)
    Это хоть и не принцип ООП, но новичакам полезно бы послушать

  • @nikitavovny3792
    @nikitavovny3792 4 ปีที่แล้ว +2

    06:45 тут я поностальгировал по былому формату

  • @lexaka26
    @lexaka26 2 ปีที่แล้ว

    - О себе вы указали "программист с большим стажем", так, неплохо. Что вы имели ввиду под уровнем английского D8?
    - Илс.

  • @vasilyya7578
    @vasilyya7578 2 ปีที่แล้ว

    Отлично! Тока нужно поменять произношение слова else, а то слух режет)

  • @oshastitko
    @oshastitko 3 หลายเดือนก่อน

    а мне наоборот, всегда было непонятно, почему никто никогда не говорит о том, что if-ы - это по сути альтернатива полиморфизму. Ведь if это как раз об этом - проверить что-то, что в принципе может быть разделено на 2 (или более, если с else) класса с общим предком, в котором, так сказать, описан весь тот контекст, в котором мы работаем

  • @alextheengineercccp3596
    @alextheengineercccp3596 4 ปีที่แล้ว

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

  • @ivansemenov3399
    @ivansemenov3399 4 ปีที่แล้ว

    Без примеров кода понятно скорее тем, кто в теме! Примеры кода, думаю, логично предоставлять на Java.

  • @Alexander.Portnoy
    @Alexander.Portnoy 4 ปีที่แล้ว

    С напряжением смотрел видео, ожидая, когда же ты начнёшь как обычно "гы-гы" впопад и невпопад. НО ЭТОГО НЕ ПРОИЗОШЛО!!! Прям видно, как нелегко тебе это давалось! Но ты смог! Респект и уважуха!!! 👍🏻👍🏻👍🏻😂 Так гораздо представительнее и производит лучшее впечатление. Признаюсь, эти постоянные гы-гы раздражают, но может это проблема во мне 😂
    Новый формат определённо имеет право на существование, но и старый оставить тоже было бы неплохо. Возможно, стоит выбирать формат в зависимости от темы.
    Согласен с другими комментаторами на тему звука (эхо) и притянутых за уши вставок-заставок. Если бы меня попросили выбрать лишь один формат из двух, то пока что старый побеждает. Но ИМХО пока ещё рано делать выводы. После пяти-десяти роликов в новом формате понятнее будет.
    Спасибо за интересный канал 👍🏻

    • @SergeyNemchinskiy
      @SergeyNemchinskiy  4 ปีที่แล้ว +1

      о господи... А вы понимаете, что такими комментариями очень демотивируете авторов? Зачем вы это делаете? У вас проблемы с самооценкой?

    • @Alexander.Portnoy
      @Alexander.Portnoy 4 ปีที่แล้ว

      @@SergeyNemchinskiy Не понимаю. Честно.

    • @SergeyNemchinskiy
      @SergeyNemchinskiy  4 ปีที่แล้ว

      @@Alexander.Portnoy ну, теперь вы знаете

  • @user-gn8jo3zd8y
    @user-gn8jo3zd8y 4 ปีที่แล้ว +1

    Отсутствие хранимого состояния, позволяет относительно легко горизонтально масштабироваться, сравнительно легко тестировать части, и легко дебажить. Самое сложное для понимания это state machine, чем является по сути любой объект в ООП.
    Из за этого, куча фреймворков и принуждает разделять хранение и обработку. Век вертикального масштабирования, сменяется горизонтальным и пора бы переходить на функциональщину.