Generic'и в C# работают лучше, чем в Java и вот почему. Covariance/Contravariance и WinDBG

  Рет қаралды 6,466

Dev Jungles - Andrii Podkolzin

Dev Jungles - Andrii Podkolzin

Күн бұрын

Пікірлер: 40
@HOSTRASOKYRA
@HOSTRASOKYRA Жыл бұрын
Гарно, що з ранку в понеділок. Надихає.
@ПростоЁж-щ3ъ
@ПростоЁж-щ3ъ Жыл бұрын
Полезный ролик. Спасибо, Андрей!
@yevheniytymchishin8401
@yevheniytymchishin8401 Жыл бұрын
new StaticClass.... хах.. интересно))
@sparda1813
@sparda1813 Жыл бұрын
Было бы интересно послушать как работают все коллекции, а не только list и linkedlist
@DevJungles
@DevJungles Жыл бұрын
И до них дело дойдет. Хочу особенно про concurrent коллекции рассказать.
@Borys-h4s
@Borys-h4s Жыл бұрын
Nice. Comment
@TOKYODRIFT00000
@TOKYODRIFT00000 Жыл бұрын
привет, а можешь рассказать о volatile, о всяких других интересных штуках, например: interlocked просто я это никогда не использую, а для «потокобезопасности», использую lock :)
@DevJungles
@DevJungles Жыл бұрын
Честно говоря, Interlocked юзать приходилось всего несколько раз, а volotile и того меньше ..
@EugeneS88-RU
@EugeneS88-RU Жыл бұрын
Насколько помню, тема ролика описана и разобрана в книге Скита "C# в глубине" Поправьте,если ошибаюсь
@DevJungles
@DevJungles Жыл бұрын
Вполне возможно, он там много писал, а я ее даже выборочно читал) Но дело было лет пять назад, потому уже не вспомню точно
@99aabbccddeeff
@99aabbccddeeff Жыл бұрын
Про StaticClass пример интересный. Такое лично не проверял, но был уверен, что для каждого типа вызовется конструктор по 1 разу. Почему-то всегда вспоминаю шаблоны и раздувание когда из-за шаблонов в плюсах. Кода компилятор генерирует код для каждого из типов. Но в .Net, насколько я знаю, этот процесс более оптимизирован.
@DevJungles
@DevJungles Жыл бұрын
Код все еще генерируется, но в runtime... Ну и для ссылочных типов переиспользуется, для значимых генерится с нуля.
@admivang
@admivang Жыл бұрын
@@DevJungles но с примером статик конструктора он вызвался и для обжект и для стринг - оба ссылочных, Методы общие но почему конструктор тогда вызвался ?
@DevJungles
@DevJungles Жыл бұрын
Метод общий, а объект типа нет: Два разных объекта типа ссылаются на одну таблицу методов: но данные о вызове стат конструктора у каждого свои
@antibioticknone3057
@antibioticknone3057 Жыл бұрын
А как вы предпочитаете писать: 1) var dict = new Dictionary(); 2) Dictionary dict = new();
@МихаилСкляренко-б4с
@МихаилСкляренко-б4с Жыл бұрын
1
@DevJungles
@DevJungles Жыл бұрын
Тут то точно 1, але от у параметрах зручно new() i погнав
@zopPes
@zopPes Жыл бұрын
А на канале планируется реклама? Или для неё пока что подписчиков мало?
@DevJungles
@DevJungles Жыл бұрын
Думаю будет. Сейчас пока приходило пару предложений, но было все довольно мутно. Плюс я не буду рекламировать компании из рф. В общем сложно это сейчас. Может какие-то другие формы монетизации буду пробовать.
@windus08
@windus08 Жыл бұрын
Дорогой дневник, пошел 2 год, как мой .нет сеньор на проекте ноет, что у джавистов такие костыли, но зп сочнее
@DevJungles
@DevJungles Жыл бұрын
Ахахах) Мне кажется, нужно немного по другому смотреть на это: ЗПхи у части разрабов сочнее, часть из них джависты, часть дотНетчики, есть немного фронтэндеров и немного плюсовиков, пара мобильных разрабов и спец по IoT пишущий на чистом Си... Может не в языке дело?)
@hgmdev
@hgmdev Жыл бұрын
Так чем лучше-то?
@DevJungles
@DevJungles Жыл бұрын
Все в видео)
@jesure
@jesure Жыл бұрын
Слушаю и понимаю слова, но уловить смысл не могу. Ещё много учиться мне
@DevJungles
@DevJungles Жыл бұрын
Все в таких руках) Настрой хороший
@НатаниэльДампо
@НатаниэльДампо Жыл бұрын
Сейчас уже рулит не язык а экосистема).
@DevJungles
@DevJungles Жыл бұрын
Это правда И здесь очко за MS с точки зрения бизнеса Ни у кого нет настолько полной системы, нужно будет бегать по пачке провайдеров. Teams, Office, Azure DevOps(instead of Jenkins+Jira+Bitbucket+Confluence), Azure Cloud, Outlook, .NET, C# К сожалению, ничего сравнимого никто не смог построить.
@Diyozen
@Diyozen Жыл бұрын
Меня просто уничтожает тот факт, что мы можем взять typeof от StaticClass, но не можем иметь массив StaticClass. Какого хрена? Ещё крайне не хватает возможности расширения констрейнов по цепочки наследования интерфейсов для методов. Причём, если сам интерфейс дженериковый, то расширять в наследниках-интерфейсах - можно, но вот дженериковый метод там же - нельзя.
@DevJungles
@DevJungles Жыл бұрын
Почему нельзя массив: Непонятно как оперировать потом элементами -- есть какой-то метод с возвращаемым значением из дженериков:как его вызвать в этом случае?..
@Diyozen
@Diyozen Жыл бұрын
@@DevJungles да никак не оперировать. Пускай ведут себя как `object`. Суть в том, что я смогу получить аргументом массив вот таких штук для композита или ещё чего-нибудь, защищённый при этом типом.
@ФагимСадыков-ъ6с
@ФагимСадыков-ъ6с Жыл бұрын
Писал на шарпе и котлине. Генерики лучше в шарпе чем в Java, соглашусь, но некоторых хаков которые достигаются на генериках в Java и Kotlin за счёт использования вайлдкарда произвольного типа, в шарпе исполнить нельзя. Но всё генерики джавы и Шарпа смотрятся просто детскими унылыми игрушками по сравнению что из себя представляют генерики в Rust. Вот уж где любитель генетиков может разгуляться...
@DevJungles
@DevJungles Жыл бұрын
Еще в TS очень мощная система, но что-то она совсем мне в голову пока не влазит.
@dann1kid
@dann1kid Жыл бұрын
Не джавист но считаю что для бизнеса джава лучше
@DevJungles
@DevJungles Жыл бұрын
Мнение вполне имеет право на жизнь, но в таком виде от него мало пользы: интересно почему именно так кажется?)
@dann1kid
@dann1kid Жыл бұрын
@@DevJungles во первых сишарп довольно грузный, и у него нет такой удобной штуки как Котлин, во вторых у джавы есть Бест практисес, и нет такой каши как у Шарпа для мульти платформы. Как питонисту, мне, после котлина Шарп тугой на ухо, которому нужно десятки методов расписывать то, что уместилось в несколько строчек. Его гет сет просто бесячие, не язык а пальцепероломай. Вот щас пишу асинхронные подключения через чттп и вот к игре сторонняя библиотека не подключается нормально, нужно использовать нативные средства языка, и это просто не язык а мучение
@DevJungles
@DevJungles Жыл бұрын
По мне так Java как язык, наоборот куда многословнее шарпа. Теже get/set нужно писать прямо целыми отдельными методами. Kotlin - поновее и почище шарпа. Java - постарше и погрязнее. Best Practices есть везде. Более того есть еще и те, которые вообще от языка и технологии не зависят и есть специфичные для языка.
@dann1kid
@dann1kid Жыл бұрын
@@DevJungles Так геттеры и сеттеры должны быть описаны отдельно, ибо должен быть инвариант входящих данных.
We Attempted The Impossible 😱
00:54
Topper Guild
Рет қаралды 56 МЛН
Каха и дочка
00:28
К-Media
Рет қаралды 3,4 МЛН
Beat Ronaldo, Win $1,000,000
22:45
MrBeast
Рет қаралды 158 МЛН
C#. Covariance and Contravariance in generic interfaces.
6:35
ExtremeCode
Рет қаралды 82 М.
Java и C#
1:04:15
БОРИС БОЯРШИНОВ СО ДНА НАУКИ
Рет қаралды 11 М.
Is C# Better than Java?
18:41
Gavin Lon
Рет қаралды 18 М.
We Attempted The Impossible 😱
00:54
Topper Guild
Рет қаралды 56 МЛН