После нескольких месяцев напряжённого программирования это первое видео от экстрим кода, который я понял. И знаете, смотреть понимая что говорит этот чел - просто блаженство! Спасибо тебе большое, я теперь понял наконец концепцию ООП!
@@HeIvis Как быстро летит время однако, я и не думал что этот коммент я писал 7 месяцев назад. Я все еще изучаю аспекты языка и познаю что-то новое. Я все это время шел по карьере тестировщика, но в недавнее время я начал интересоваться созданием десктоп приложений на джаве. Из достижении могу только упомянуть про экзамены Oracle по джаве. Правда должен признать что сейчас больше времени уделяю подготовке к универам и учебе
Я поступил в тех уник и лично в нашем универе меня напрягает отдача в сторону узбекскому языку, истории Узбекистана и тд. Т.к. я знаю что мне не пригодится. Если можно было бы я отдал все время программированию раньше. Т.к. это очень интересно
Разница между статической и динамической типизацией не в том, что в статической ты указываешь типы, а в динамической нет, а в том, что в статической корректность типов проверяется на этапе компиляции (т.е. буквально статически), а в динамической -- в рантайме. В языках с выводом типов не всегда нужно указывать типы, при этом они статические. Например, в Haskell можно задать полиморфную функцию add x y = x + y (да, это буквально все определение функции) без указания типов. 7:25 ad hoc полиморфизм это тоже "настоящий" полиморфизм, без него, например, невозможно было бы написать полиморфную функцию сортировки (тебе в любом случае нужно перегружать оператор >= для каждого типа), просто в ООП языках он выглядит коряво, это правда.
Ad hoc полиморфизм - это просто статический полиморфизм. Ты пишешь var x = 5, а перед компиляцией это превратится в int x = 5. То же самое с перегрузкой функций. Пишешь функцию с уже существующим названием, но другими аргументами, и перед компиляцией подставится конкретная реализация.
Если бы я заведомо не знал, что такое полиморфизм, то из этого видео скорей всего так ничего бы и не понял... Просто я тупой, а это видео, вероятно, только для умных.
спасибо за видео. разные подходы там и там обозначены. а в серьëзных проектах, где важна и безопасность и производительность по-любому применяют покрытие кода тестами
Как понять каждый раз новый герой? я совсем отбитый, сижу и спамлю Мипо на ласт пик, потому что я могу, и у меня есть самописные макросы, которые мне достались от бабушки. В каждой игре повторяется ряд персонажей, ты не прав, и я требую в знак принятия этой ошибки снять видео "С# для маленьких и тупых"
Illson 7Я так в конструкторе пяток персонажей, вариантов комбинаций много: чтобы не писать по конструктору на каждую комбинацию (а число комбинаций будет драматично возрастать с каждым новым добавленным героем), есть полиморфизм: создаёшь интерфейс IHero, например, вешаешь интерфейс на классы всех своих Мипо-Шмипо-Пуджей-Муджей, и всё, достаточно одного конструктора с пятью IHero.
@@Dimarious.G именно. Если есть объект map, который включает в себя все остальные объекты, то они взаимодействуют с ним через его интерфейс. И каждая сущность должна толкать свои речи с map по его жаргону, то есть "нормальным языком в рамках дозволенного".
В шарпе можно ещё object юзать, вместо dynamic Первому проще downcast забабахать, потому что это всем классам класс (если не указывать родителя - он там будет object "неявно") А с dynamic свои приколы Можно конечно упороться и наследовать свои классы от dynamic, а потом ловить с этого рофлы и лулзы Но и это тоже работать будет, как-то Вот классно придумали множественное наследование После чего, в ООП прострелить колено стало в два раза проще, равно как и хрупкость родителей/наследников стала в два раза более хрупкой
Кстати про статическую типизацию: Если так посмотреть на развитие систем со статической типизацией,то данные системы скоро будут ничем не уступать системам с динамической типизацией. Параметрический полиморфизм есть. Полиморфизм,описанный в видео тоже имеется. А проблемы с хешмапами с различными типами помогут решить зависимые типы с параметрическим полиморфизмом.
Вы пишете: *данные системы скоро будут ничем не уступать системам с динамической типизацией* Это какой то бред. Статические системы в принципе ничем не уступают динамическим уже просто потому, что динамические реализуются поверх статических.
Да не. Инкапсуляция оно тоже, облегчает понимание чего же класс делает конкретно. Просто приватно-протектные поля и методы не рассматриваешь и четко видишь его, класса, суть. Воот. Ну и безопасность в наименованиях этих приватных сущностей. Не надо бояться дублирования имен(все закрыто на замок, инкапсулированно). А ведь это может произойти случайно, не специально.
"Без него невозможно писать приложения, по крайней мере в объектно-ориентированном стиле с использованием статической типизации". Ну, динамические-типизированные ЯПы вообще не могут существовать без полиморфизма, ибо динамические переменные не могут быть без динамического полиморфизма. А ещё насчёт ad hoc полиморфизма. Я пока в этом слабо шарю, но это, получается, просто статический полиморфизм?
Статичиская типизация ещё и на скорость и потребление памяти нехило так влияет. Вот нужна тебе переменная в виде числа 0..254 - Проще всего юзать char (unsigned int) - Такая переменная будет "Жрать" один байт оперативки. В динамических языках - Сначала пройдет проверка, что это и как хранить. Потом оно (Внезапно!) может превратиться в строку и занять уже не один байт, а аж 10 (Не помню в какой из языков такая херня, но бывает и не такое)...
В динамически типизированных языках всё ещё интереснее. Переменные не могут храниться в стеке, т.к. в любой момент программы могут внезапно изменить тип данных, потребовав другое количество байт памяти, соответственно данные хранятся в хипе(динамической памяти). Это память, которую можно удалить в любой момент, когда ты захочешь, а потом выделить ещё какое-то количество байт памяти. Но получить доступ к ней можно только через указатель(4 байта на 32-битной системе и 8 на 64). Но к тому же динамическая память выделяется операционной системой, а ей нужно запомнить область, где лежит кусок динамической памяти. Она помещает прямо перед выделенной областью какие-то данные, которые позволяют нормально работать с динамической памятью. А он весит ещё несколько байт. Так что любая переменная требует примерно от 10 байт, даже если хранится просто одна буква. (исправьте меня, если я написала неправильно)
@@АлинаЛебедева-с4ъ Вы пишете: *Переменные не могут храниться в стеке, т.к. в любой момент программы могут внезапно изменить тип данных* Это чушь. Из того факта, что они могут в любой момент изменить тип, никак не следует, что переменные не могут храниться в стеке. И так, на всякий случай: размеры указательных типов не фиксированы. Никто не гарантирует, что они будут именно 4 байта на 32-й платформе, и 8 на 64-х битной.
Как тут уже писали, статика/динамика говорит о времени проверки типов (компилация/выполнение). Не надо путать с явной/неявной и сильной/слабой типизацией. Зачем путать людей? А чтобы в метод не попало хер знает что, надо проверки на тип данных делать. Никто не запрещает в том же Python генерировать свои исключения. И еще, C таки со слабой типизацией, так что толку от проверок на этапе компилиции особо нет, если он потом может неявно преобразовать данные.
У тебя есть видос, типа "почему php - не ЯП"? Если есть, то дай ссыль(именно твое мнение), а если нет, то запили. Очень хочется узнать, почему ты его (пхп) не упоминаешь в большинстве видосов, обходишь стороной.
1) а как же не ООП языки со статической типизацией по типу С без полиморфизма в полном смысле слова? 2) динамическую типизацию можно рассматривать как частный случай статической типизацией. т.е. например в джава все классы неявно наследники класса Object, если везде в сигнатуре писать Object, то проект не скорее всего не скомпилируется, так как использование объектов, мягко говоря, крайне редко ограничены методами класса Object. Таким образом динамическая типизация просто позволяет нарушать типизацию, похоже на нарушение LSP в ООП. 3) Преимущества статической типизации не только в безопасности. В динамической типизации можно в каждом методе проверять тип объекта и писать тесты, в то время как в статической многие грешат рефлекшнами и другими приблудами приводящими к ошибкам компиляции. Как по мне, основное преимущество в том, что программисту не нужно читать реализацию, что бы понять как пользоваться методом (т.е. что в него посылать и что он возвращает, какие исключения кидает). Т.е. на вашем примере видя сигнатуру function Method(a, b) не понятно какой будет результат, если я пошлю туда числа, строки, даты, точки, число и строку и т.д. что он вернёт? кинет исключения? какие? В случае с string Method(string a, string b) я понимаю сразу, что я могу кидать только строки и вернётся строка и никаких исключений (не считая не ожидаемых исключений, которые и не нужно обрабатывать почти всегда). И мне не нужно читать реализацию (которая может быть огромнейшая), тем более, что их может быть много (не только в ООП языках).
Не знаю как в других языках с динамической типизацией, но в моём любимом ♂Python♂ можно проверять соответствует ли переменная / обьект определённому классу / типу данных.
Добрый день , можете обяснить зачем мне нужен CLR поскольку я начал читать Рихтера и у меня появилось такое впечетление что я читаю что-то ненужное . Смотря на примеры , я понимаю что это я прочитал у Шилдта . Нужно ли мне дальше продолжать это делать или перейти на болие практичную книжку ?А то я тот человек который не воспренимает ту информацию которая не есть интересна или практична . Прочитав уже 100 страниц ,я так и не понял где я могу применить полученые знания . (Сори за русский, в школе не учил .)
Gregoruy Horikov ты новичок в программировании? Отложи пока Рихтера, ещё рано, потом вернёшься, читать его нужно, но пока ничего не поймёшь, сначала учи сам C#, книг много, можешь глянуть на Троелсена, Шарп (фамилия автора, да), или что нибудь в инете.
На 4:38 возникает вопрос: а почему мы создали много разных типов героев, да потом ещё пытаемся подсунуть их в качестве параметра в функцию? Если мы создали разные типы, значит объекты этих разных типов должны использоваться в разных функциях. А если они используются в одной общей функции, то почему мы не хотим создать одни общий тип для "героя"?
Ребят, расскажите пожалуйста. Почему мы не можем сделать def вместо string (0:58) тогда же всё нормально работает. Или я залупеньчкоторый ничерта не понимает?
И все равно динамическая типизация лучше. Не надо парится. А вот когда надо париться от строгости данных, так их нужно просто проверять. И нет проблем. И ничего случайно не прилетит.
Практика показывает, что прилетает. Проблема динамики заключается в том, что прилетает оно уже в рантайме, когда цена ошибки может быть очень высокой. Поэтому, динамику нужно очень тщательно тестировать. Статика в этом смысле гораздо более безопасна.
Полиморфизм - один из главных столпов объектно-ориентированного программирования. Его суть заключается в том, что один фрагмент кода может работать с разными типами данных.
@@yava43 Да. Единственное: в вашей формулировке отсутствует исходный посыл: зачем это нужно? В буквальном смысле: почему полиморфизм - это круто, а отсутствие полиморфизма - это отстой?
всё что понятно из ролика: патерны говно, полиморфизм говно, ооп говно. зачем городить огород, когда всё что нужно программисту - процедуры и структуры?
Не согласен с видео. Полиморфизм не имеет ничего общего с типизацией. Это просто возможность подменять исполнителей методов в рантайме. Типизация здесь не обязательна. Что касается безопасности динамических языков, то можно писать тесты, которые проверяют корректность работы системы
@@Fateslav Классический пример с собачками/кошечками показывает, что ваше определение - бред. А теперь вы приведите хотя бы один пример, который иллюстрирует подмену исполнителей в рантайме. Я полагаю, корень ваших заблуждений заключается в том, что вы не понимаете принципа действия полиморфизма. В интернетах есть статьи из цикла: "полиморфизм - взгляд с точки зрения низкоуровневой реализации". Вам стоит ознакомиться с материалом, что бы не нести в интернетах оголтелую чушь.
Я на питоне активно пользуюсь classmethod и часто прошу предка наколбасить мне экземпляров его потомка. Работает нормально. Но при попытке даже просто аннотировать это дело приходится прям шаманский бубен доставать.
уххх бляяя, меня рапирает от знаний, уххххххххххххххххх, пойду маме расскажу что я выучил!!
УЪУ СЪУКА
Главное папке не рассказывай, переебет по ебалу ногой со старта! Ага
Дааа... После просмотра этого видео никто даже не сможет написать классы, которые наследуют от другого класса. Не пустые, а реальные.
@@KulaGGin тут видео не про это же) про более крупных масштабов проблемы
если ты ниче не понял, то рано это смотреть) это для шарящих более менее
в конце видоса у меня конструкторы отклеились от классов в радиусе двух проектов
Почему такой смешной юмор никто не оценил?
=D
@@60d93 просто никто не понял xD
@@dann1kid} ppp0000
@@DrForse я не понял(
После нескольких месяцев напряжённого программирования это первое видео от экстрим кода, который я понял. И знаете, смотреть понимая что говорит этот чел - просто блаженство! Спасибо тебе большое, я теперь понял наконец концепцию ООП!
Привет, как успехи в программировании?
@@HeIvis Как быстро летит время однако, я и не думал что этот коммент я писал 7 месяцев назад. Я все еще изучаю аспекты языка и познаю что-то новое. Я все это время шел по карьере тестировщика, но в недавнее время я начал интересоваться созданием десктоп приложений на джаве. Из достижении могу только упомянуть про экзамены Oracle по джаве. Правда должен признать что сейчас больше времени уделяю подготовке к универам и учебе
Я поступил в тех уник и лично в нашем универе меня напрягает отдача в сторону узбекскому языку, истории Узбекистана и тд. Т.к. я знаю что мне не пригодится. Если можно было бы я отдал все время программированию раньше. Т.к. это очень интересно
Ебать,спустя 2 года я понял о чём видео,наверное из-за того,что я джава стриптизёр.
жиза
простите но разве в джава нет ооп?
"А сейчас внимание вопрос.." 4:43 - тембр и интонация почти один в один как у ведущего)) респект)
Если уж разговор о Доте, то там еще должен быть клас "Мамка" и метод "е*ать"
Разница между статической и динамической типизацией не в том, что в статической ты указываешь типы, а в динамической нет, а в том, что в статической корректность типов проверяется на этапе компиляции (т.е. буквально статически), а в динамической -- в рантайме. В языках с выводом типов не всегда нужно указывать типы, при этом они статические. Например, в Haskell можно задать полиморфную функцию add x y = x + y (да, это буквально все определение функции) без указания типов.
7:25 ad hoc полиморфизм это тоже "настоящий" полиморфизм, без него, например, невозможно было бы написать полиморфную функцию сортировки (тебе в любом случае нужно перегружать оператор >= для каждого типа), просто в ООП языках он выглядит коряво, это правда.
Ad hoc полиморфизм - это просто статический полиморфизм. Ты пишешь var x = 5, а перед компиляцией это превратится в int x = 5. То же самое с перегрузкой функций. Пишешь функцию с уже существующим названием, но другими аргументами, и перед компиляцией подставится конкретная реализация.
@@АлинаЛебедева-с4ъ Вы внимательно прочитали сообщение *fakt* , и решили, что он не в курсе, что такое Ad hoc ?
Отлично заходит. Но пока видосика дождешся, можна и от климакса умереть. Спасибо за видос.
причем даже если ты мужчина
"Пока говно на вентилятор не попадёт...." Ржал) Красава
За два года обучения на ИТ в вузе не узнала столько, сколько узнала за этот видос
Бля, видос настолько хорош что мне надо смотреть его на свежую голову. Это лайк, господа!
Чувааак, ты вот прям взял и запилил то, что я год никак не соберусь. Это очень клёво.
Братан, хорош, давай, давай, вперёд! Контент в кайф, можно ещё? Вообще красавчик! Можно вот этого вот почаще?
Ёмкий полиморфизм
Если бы я заведомо не знал, что такое полиморфизм, то из этого видео скорей всего так ничего бы и не понял...
Просто я тупой, а это видео, вероятно, только для умных.
а видос разве о понимании полиморфизма? просто, наверное я даже не сосредотачивался на попытке понять
тут скорее что ты должен уже знать что это такое, но по факту чётко
Блэдь, так вот почему я всегда считал ооп каким-то ненужным говном
_мимо любитель душить питона_
идеально лекция + картинки + юмор
4 года работаю, но видосы смотрю с удовольствием, годно)
Люблю эти старые видосы без рекламы
в питоне есть библиотека typing и можно с ней сделать, чтобы функция принимала аргумент только с определенным типом
Спасибо. Надо повторить. С первого раза недопонял.
Вот это нужный видос, недавно прошел эти темы и такая информация и пример со стороны очень кстати, лайк
спасибо за видео.
разные подходы там и там обозначены.
а в серьëзных проектах, где важна и безопасность и производительность по-любому применяют покрытие кода тестами
Хотелось бы уже чего-нибудь посложнее. Видео о рефлексии или тех же паттернах, например.
о, о рефлексии дистительна отель бы
gentleNES А в чем проблема прочесть книгу по паттернам? Благо есть куча отличных книг на эту тему.
@@anmaner4822 С книги по паттернам не поорать нормально. Хотя если я ошибаюсь и у вас есть орная книга по патернам, то дайте сурс.
вот это да, 4 года прошло, а мы все мацаем у ExtremeCode насущные вопросы, потому что видосы сок
Информативный видос, содержит инфу которая часто встречается на собесах
То чувство, когда слышал этот пример на стриме и так же подумал решить проблему)
как я готовлюсь к собеседованиям) спасибо чел)
Здравствуйте!! Скажите пожалуйста сделаете ли вы видео-глоссарий для начинающих программистов?)) Мне кажется большая часть зрителей будет рада))
6:52 Игра: Age of Empires II: The Conquerors (2000)
Как понять каждый раз новый герой? я совсем отбитый, сижу и спамлю Мипо на ласт пик, потому что я могу, и у меня есть самописные макросы, которые мне достались от бабушки. В каждой игре повторяется ряд персонажей, ты не прав, и я требую в знак принятия этой ошибки снять видео "С# для маленьких и тупых"
Illson 7Я так в конструкторе пяток персонажей, вариантов комбинаций много: чтобы не писать по конструктору на каждую комбинацию (а число комбинаций будет драматично возрастать с каждым новым добавленным героем), есть полиморфизм: создаёшь интерфейс IHero, например, вешаешь интерфейс на классы всех своих Мипо-Шмипо-Пуджей-Муджей, и всё, достаточно одного конструктора с пятью IHero.
@@Dimarious.G именно. Если есть объект map, который включает в себя все остальные объекты, то они взаимодействуют с ним через его интерфейс. И каждая сущность должна толкать свои речи с map по его жаргону, то есть "нормальным языком в рамках дозволенного".
В шарпе можно ещё object юзать, вместо dynamic
Первому проще downcast забабахать, потому что это всем классам класс (если не указывать родителя - он там будет object "неявно")
А с dynamic свои приколы
Можно конечно упороться и наследовать свои классы от dynamic, а потом ловить с этого рофлы и лулзы
Но и это тоже работать будет, как-то
Вот классно придумали множественное наследование
После чего, в ООП прострелить колено стало в два раза проще, равно как и хрупкость родителей/наследников стала в два раза более хрупкой
то чуство когда забил на с++ на моменте ООП и случайно сюда попал и офигел.
"ситуация возникает довольно редко, но уверяю вас, эта ситуация довольно распространена" (с) ExtremeCode
Отлично из контекста вырвал. "Может показаться, что ситуация возникает довольно редко, но уверяю вас, эта ситуация довольно распространена".
@@goreney Просто разъебал по фактам
Он сказал МОЖЕТ показаться, но уверяет, что ситуация довольно распространенна
Пишу на питоне, но на удивление всё понял.
Отлично получается, продолжайте в том же духе!!!!
я посмотрел видео:" что такое полиморфизм"?
Какое интересное чувство юмора 😂🖖🏻👍
Кстати про статическую типизацию:
Если так посмотреть на развитие систем со статической типизацией,то данные системы скоро будут ничем не уступать системам с динамической типизацией.
Параметрический полиморфизм есть.
Полиморфизм,описанный в видео тоже имеется.
А проблемы с хешмапами с различными типами помогут решить зависимые типы с параметрическим полиморфизмом.
Вы пишете: *данные системы скоро будут ничем не уступать системам с динамической типизацией* Это какой то бред. Статические системы в принципе ничем не уступают динамическим уже просто потому, что динамические реализуются поверх статических.
Ааааа! Я всё пооонял!
Если я пешу на JS - я могу забить на:
1. Паттерны
2. ООП
3. Полиморфизм
Профит!
Да не. Инкапсуляция оно тоже, облегчает понимание чего же класс делает конкретно. Просто приватно-протектные поля и методы не рассматриваешь и четко видишь его, класса, суть. Воот.
Ну и безопасность в наименованиях этих приватных сущностей. Не надо бояться дублирования имен(все закрыто на замок, инкапсулированно). А ведь это может произойти случайно, не специально.
Очевидная расстаноква линий в данном случае: кери Пудж с спортом Магнусом, мид Лина и в офлайне Свен с ВРкой. Классный пик, кста, нужно затестить.
Чувак, на 3:40 я просто валялся под столом. Аплодисметы за юмор! :))))
Я один смотрю эти видосы ради шутеек автора, а не для того, чтобы подчерпнуть что то новое?)
Когда уже, проф кодер, но шутки про ебобо отлично заходят
Дмитрий Антоненко с ростом компетенций потребность в ебобо становится более очевидной
Да.
поДчерпнуть это как? низэнько-низэнько? :) :) :)
Прекрасная работа!
Так и не смог догадаться, какое слово спрятано под Ё*кий.
Б
Про способность функции обрабатывать данные разных типов.
"Без него невозможно писать приложения, по крайней мере в объектно-ориентированном стиле с использованием статической типизации". Ну, динамические-типизированные ЯПы вообще не могут существовать без полиморфизма, ибо динамические переменные не могут быть без динамического полиморфизма. А ещё насчёт ad hoc полиморфизма. Я пока в этом слабо шарю, но это, получается, просто статический полиморфизм?
Красиво. До слёз.
Очень интересно, но с середины перестал понимать, видимо я тупой ещё пока, пойду книжки читать!)
Статичиская типизация ещё и на скорость и потребление памяти нехило так влияет.
Вот нужна тебе переменная в виде числа 0..254 - Проще всего юзать char (unsigned int) - Такая переменная будет "Жрать" один байт оперативки. В динамических языках - Сначала пройдет проверка, что это и как хранить. Потом оно (Внезапно!) может превратиться в строку и занять уже не один байт, а аж 10 (Не помню в какой из языков такая херня, но бывает и не такое)...
В динамически типизированных языках всё ещё интереснее. Переменные не могут храниться в стеке, т.к. в любой момент программы могут внезапно изменить тип данных, потребовав другое количество байт памяти, соответственно данные хранятся в хипе(динамической памяти). Это память, которую можно удалить в любой момент, когда ты захочешь, а потом выделить ещё какое-то количество байт памяти. Но получить доступ к ней можно только через указатель(4 байта на 32-битной системе и 8 на 64). Но к тому же динамическая память выделяется операционной системой, а ей нужно запомнить область, где лежит кусок динамической памяти. Она помещает прямо перед выделенной областью какие-то данные, которые позволяют нормально работать с динамической памятью. А он весит ещё несколько байт. Так что любая переменная требует примерно от 10 байт, даже если хранится просто одна буква.
(исправьте меня, если я написала неправильно)
Вы пишите: *Такая переменная будет "Жрать" один байт оперативки* Не факт. Такая переменная будет жрать *минимум* 1 байт
@@АлинаЛебедева-с4ъ Вы пишете: *Переменные не могут храниться в стеке, т.к. в любой момент программы могут внезапно изменить тип данных* Это чушь. Из того факта, что они могут в любой момент изменить тип, никак не следует, что переменные не могут храниться в стеке. И так, на всякий случай: размеры указательных типов не фиксированы. Никто не гарантирует, что они будут именно 4 байта на 32-й платформе, и 8 на 64-х битной.
ещё не посмотрел, но спасибо за видео
C# с гибридной типизацией, там есть dynamic.
3:09 **Этот мем** Серьезно?
Какие угодно, но только не тоненькие программерские ляшечки😆
нихрена не понял
Охуеть, дотку то без полиморфизма не написать было! Пойду скажу Габену об этом.
Бомбичесеий видос ! Автор я твой фанат!;)
Кулл хацкеры обожают код с динамической типизацией)
Как тут уже писали, статика/динамика говорит о времени проверки типов (компилация/выполнение). Не надо путать с явной/неявной и сильной/слабой типизацией. Зачем путать людей? А чтобы в метод не попало хер знает что, надо проверки на тип данных делать. Никто не запрещает в том же Python генерировать свои исключения. И еще, C таки со слабой типизацией, так что толку от проверок на этапе компилиции особо нет, если он потом может неявно преобразовать данные.
Тем временем я: **звук думающего модема**
**пошёл кодить на Blitz Basic, где нет методов**
Браво!) Интересно, а если на собеседовании в такой форме, как твои видео отвечать😂😂
Думаю тогда можно попасть к весёлым ребятам))
Главное закрякивать некоторые свои слова, всё-таки на собеседование пришёл же..
Тогда я буду много крякать))
Блять, просто шли всех нахуй сразу! Сам всегда так делаю...
Нифига ты с примером из доты замарочился)
Примеры на доте это гениально, хотя не хватает что то про мам…
Приятный для просмотра видосик)))
Скучаю по вашим видосикам, куда вы пропали? :(
После 2:44 пришлось ставить видос на паузу, поржать, успокоиться, и только потом продолжать смотреть потому что дальше информация уже не шла)
даешь про рефлексию
У тебя есть видос, типа "почему php - не ЯП"? Если есть, то дай ссыль(именно твое мнение), а если нет, то запили. Очень хочется узнать, почему ты его (пхп) не упоминаешь в большинстве видосов, обходишь стороной.
Приятного аппетита!
От души, братан
О чем видос? Про полиморфизм и ниче толком не обяснил
В конце: "все мудачи ребят")
1) а как же не ООП языки со статической типизацией по типу С без полиморфизма в полном смысле слова?
2) динамическую типизацию можно рассматривать как частный случай статической типизацией.
т.е. например в джава все классы неявно наследники класса Object,
если везде в сигнатуре писать Object, то проект не скорее всего не скомпилируется,
так как использование объектов, мягко говоря, крайне редко ограничены методами класса Object.
Таким образом динамическая типизация просто позволяет нарушать типизацию, похоже на нарушение LSP в ООП.
3) Преимущества статической типизации не только в безопасности.
В динамической типизации можно в каждом методе проверять тип объекта
и писать тесты, в то время как в статической многие грешат рефлекшнами
и другими приблудами приводящими к ошибкам компиляции.
Как по мне, основное преимущество в том, что программисту не нужно читать реализацию,
что бы понять как пользоваться методом (т.е. что в него посылать и что он возвращает, какие исключения кидает).
Т.е. на вашем примере видя сигнатуру function Method(a, b)
не понятно какой будет результат, если я пошлю туда числа, строки, даты, точки, число и строку и т.д.
что он вернёт? кинет исключения? какие?
В случае с string Method(string a, string b) я понимаю сразу,
что я могу кидать только строки и вернётся строка и никаких исключений (не считая не ожидаемых исключений, которые и не нужно обрабатывать почти всегда).
И мне не нужно читать реализацию (которая может быть огромнейшая), тем более, что их может быть много (не только в ООП языках).
Разумист, умен и масленист.
Браво !!!
Ты крутой, абжаю тебя чувак)
Приятного аппетита, лойс)
Не знаю как в других языках с динамической типизацией, но в моём любимом ♂Python♂ можно проверять соответствует ли переменная / обьект определённому классу / типу данных.
typeof, instanceof в js/ts насколько я помню
Удобство напрямую связано с безопасностью
Добрый день , можете обяснить зачем мне нужен CLR поскольку я начал читать Рихтера и у меня появилось такое впечетление что я читаю что-то ненужное . Смотря на примеры , я понимаю что это я прочитал у Шилдта . Нужно ли мне дальше продолжать это делать или перейти на болие практичную книжку ?А то я тот человек который не воспренимает ту информацию которая не есть интересна или практична . Прочитав уже 100 страниц ,я так и не понял где я могу применить полученые знания . (Сори за русский, в школе не учил .)
Gregoruy Horikov ты новичок в программировании? Отложи пока Рихтера, ещё рано, потом вернёшься, читать его нужно, но пока ничего не поймёшь, сначала учи сам C#, книг много, можешь глянуть на Троелсена, Шарп (фамилия автора, да), или что нибудь в инете.
Точняк, на входе только Троельсен. Рихтер подождет. Да и хуй на него можно забить.
5:40 да не, никаких проблем. В плюсах можно все через pvoid ебашить xD
На 4:38 возникает вопрос: а почему мы создали много разных типов героев, да потом ещё пытаемся подсунуть их в качестве параметра в функцию? Если мы создали разные типы, значит объекты этих разных типов должны использоваться в разных функциях. А если они используются в одной общей функции, то почему мы не хотим создать одни общий тип для "героя"?
Блять, просто такое api. Как будто ты не сам не говнокодил...
public String стильПовествования(boolean топовый);
Почему видео о наследовании называется "полиморфизм" ?
Абстрактные классы реализуют на практике один из принципов ООП - Полиморфизм
там не было про extends или inherits
Потому что это видео о полиморфизме. Да, тут используется наследование, но оно открывает дорогу к полиморфизму, и именно это тут демонстрируется
@@АлинаЛебедева-с4ъ табуретка? :)
Чувак запили видос в гуспрском стиле - замени матерки на элегантные обороты. Просто интересно.
Примеры заебись, но уверен что не все поймут из видео что есть разные виды полиморфизма. Хотя как вводный гайд в эту тему, зайдёт думаю норм
Первый раз услышал про ad hoc полиморфизм. А ты на каких героях в дотку гамаешь если не секрет?
Ребят, расскажите пожалуйста. Почему мы не можем сделать def вместо string (0:58) тогда же всё нормально работает. Или я залупеньчкоторый ничерта не понимает?
Какой def? string это тип возвращаемого функцией значения. Def это из питона суета или откуда ты взял это?
@@acrossthedoor чел, ты немного запоздал с ответом
Ничего не поняла, но ооочень интересно
Перегрузка методов была еще в простом C, в те годы, когда ООП не был даже в проекте.
Это бред. В сишке нет, и никогда никогда не было перегрузки методов.
куда делся видос по инкапсуляции?инкапсулировался по полной?
Ни чего не понятно, но очень интересно
И все равно динамическая типизация лучше. Не надо парится. А вот когда надо париться от строгости данных, так их нужно просто проверять.
И нет проблем. И ничего случайно не прилетит.
Практика показывает, что прилетает. Проблема динамики заключается в том, что прилетает оно уже в рантайме, когда цена ошибки может быть очень высокой. Поэтому, динамику нужно очень тщательно тестировать. Статика в этом смысле гораздо более безопасна.
Полиморфизм - один из главных столпов объектно-ориентированного
программирования. Его суть заключается в том, что один фрагмент кода может работать
с разными типами данных.
Норм формулировка?
@@yava43 Да. Единственное: в вашей формулировке отсутствует исходный посыл: зачем это нужно? В буквальном смысле: почему полиморфизм - это круто, а отсутствие полиморфизма - это отстой?
Пикаем, сохраняем, передаем созраненные данные в мапу
всё что понятно из ролика: патерны говно, полиморфизм говно, ооп говно. зачем городить огород, когда всё что нужно программисту - процедуры и структуры?
Не согласен с видео. Полиморфизм не имеет ничего общего с типизацией. Это просто возможность подменять исполнителей методов в рантайме. Типизация здесь не обязательна.
Что касается безопасности динамических языков, то можно писать тесты, которые проверяют корректность работы системы
А как проверить корректность самих тестов?..
Вы написали какой то бред. Полиморфизм никаких исполнителей в рантайме не подменяет.
@@princessmary5556 приведите любой пример полиморфизма и убедитесь, что моё определение работает
@@Fateslav Классический пример с собачками/кошечками показывает, что ваше определение - бред. А теперь вы приведите хотя бы один пример, который иллюстрирует подмену исполнителей в рантайме. Я полагаю, корень ваших заблуждений заключается в том, что вы не понимаете принципа действия полиморфизма. В интернетах есть статьи из цикла: "полиморфизм - взгляд с точки зрения низкоуровневой реализации". Вам стоит ознакомиться с материалом, что бы не нести в интернетах оголтелую чушь.
Ничего не понял, но очень интересно.
Где купить твои курсы? Shut up and take my money
Суть с 8:20 Немногие это понимают - Инкапсуляция и Наследование без Полиморфизма - куски.
Я на питоне активно пользуюсь classmethod и часто прошу предка наколбасить мне экземпляров его потомка. Работает нормально. Но при попытке даже просто аннотировать это дело приходится прям шаманский бубен доставать.