💡 Попробуй онлайн-тренажёр для подготовки к техническому собеседованию: clck.ru/3B5gwP 💡 Забирай роадмап изучения самого востребованного фреймворка на Python - FastAPI здесь: t.me/ArtemShumeikoBot
Крутая вещь, но возникает вопрос. Как тогда проверять, что наш тип, который будет возвращать функция, например, является интеджер, или как сделать чтобы он был только интеджер?
Проверку типа можно организовать через isinstance. Однако в питоне нет возможности через сам TypeVar проводить манипуляции с типами, поэтому только так.
Нового курса не будет. После 31 мая нельзя будет попасть на курс. В течение этого года хочу сделать рефокус с курса на свой IT продукт, на это нужно время. Поэтому я набираю тех людей, кто хочет изучить backend разработку и найти работу разработчиком, и закрываю вход.
С чего это вдруг динамическая типизация -- недостаток? Зачем вообще делают ЯП с динамической типизацией? Потому что статический анализатор написать не получилось?)
да. потому что хотели упростить язык а такой статический анализатор как например у F# сразу не спроектировали. а потом язык взлетел и уже поздно делать ломающие изменения
Ушёл из активной питон-разработки уже несколько лет как. Если придется возвращаться, проще на что-то со статической типизацией, чтобы не заниматься этим онанизмом с аннотациями
Я, конечно, люблю питон (мой первый язык как никак), но от таких нововведений появляется ощущение, что они (разрабы) пытаются догонять другие языки в плане строгой статической типизации. Невольно появляется мысль "может сразу использовать джаву или шарп"... Но его сахарный синтаксис в каком-то смысле того стоит. Вот бы быстрый типизированный язык с удобным синтаксисом питона
Это в java, net, go, rust. Есть template в плюсах. Общий код для разных типов. Например без дженериков/шаблонов для списков значений int, double нужно будет делать две реализации. С ними - одну.
по простому: если ТипЗначения представить значением, то дженерик это переменная в которых их хранят и описывают функции не конкретными типами, а через эти переменные)
начать можно с небольших полезных функций (utils/helpers), их можно перевести на дженерики. Например, как в видео, функция, которая из последовательности данных извлекает первый ненулевой элемент
У языка Python нет минусов. Просто не надо язык, который был придуман для обучения новичков/скриптинга/прототипирования использовать для ВСЕГО. Конечно когда начинаешь все больше писать на нем промышленный код, тебе кажется что у него есть недостатки. А потом такие писальщики через пять лет, когда бекенд начинает загибаться, переписывают какую-то часть на производительных языках Go/Rust/C и такие с глазами по пять копеек.... о производительность в десять раз стала круче 😁😁 тучи развинулись, и молния Зевса открыла новый мир)
Сомнительно. Бизнесу нужно быстро, +уже во время разработки у бизнеса часто меняется требования и даже архитектура. В таких случаях "промышленные" языки могут отсохнуть и отвалится. По производительности, в какие сто раз может увеличится производительность, если основное время тратится не на обработку, а на транспорт данных по сети (т.е. фактор одинаковый для всех языков). Да и всегда ли производительность приоритет у бизнеса?
Дык для того и завозят в питон опциональную статическую типизацию, чтобы потоптать поляну более серьезных языков. Ибо доступен как профит динамического языка с его выразительным синтаксисом, так и надежность и удобство поддержки кода, которую дает типизация. А скорость и потребление железных ресурсов за пределами настоящего хайлоада мало кого волнует. Ибо это в любом случае копейки на фоне стоимости разработки.
@@redneck_prm5429 т.е. типизация делает питон серьезным? а если делает получается у питона вышло совместить динамику и синтаксис с надежностью? и вряд ли кто то умышленно хочет потоптать поляны других языков, скорее собственный путь
@@redneck_prm5429 Все эти Python/Mojo Javascript/TypeScript свою работу делаю на "пол шишечки". Не вижу я в этом хороший архитектурный путь. Всегда там все внедряется на половину, потому что нужно ж сохранять совместимость с динамичным языком. Плюс они портят и размывают границы там где работу могут выполнять например джуниоры и их кусок пишется на скриптовых простых языках, а хардовую часть опытные разработчики пишут отдельно на предназначенном языке. И таким образом джуниор до поры времени не сталкивается с сложным кодом и не лезет туда куда не надо. А так какой смысл языка "для начинающих" если приходишь в компанию, а там на нем все написано и надо уже круто шарить. "...А скорость и потребление железных ресурсов за пределами настоящего хайлоада мало кого волнует..." во первых плох тот проект, который не стремиться стать хайлоад. Странно писать сайт, которому завтра ты не хочешь популярности. А во-вторых ты просто не знаешь, какой твой проект завтра станет популярным. А вдруг он взлетит резко, потому что интересную программу/сайт написал. Нагрузка прет, а пересесть на другие технологии часто не получиться просто и дешево. Да Python Javascript дают быстрый взлет, но всегда за быстрым наспех скроенными проектами тянется долгосрочные последствия по поддержанию этого проекта.
@@__.X3.__ Ну во первых есть разные задачи и сайты, не везде транспорт это львиная обработка, особенно так где сайт это онлайн-программы. во-вторых обработка транспорта тоже делается на каких то языках. И почему то в тестах фреймверков, когда меряются количеством фпс, я не сильно видел в лидерах фреймверки на Python. А лидерство берут все те же Go/Rust/C и т.д. Так что не отсохнут и не отвалятся 😄
💡 Попробуй онлайн-тренажёр для подготовки к техническому собеседованию: clck.ru/3B5gwP 💡
Забирай роадмап изучения самого востребованного фреймворка на Python - FastAPI здесь: t.me/ArtemShumeikoBot
Охуж эти дженерики. Я такой на TS съел, чуть не отравился😂
Крутая вещь, но возникает вопрос. Как тогда проверять, что наш тип, который будет возвращать функция, например, является интеджер, или как сделать чтобы он был только интеджер?
Писать функции на плюсах 😂
Проверку типа можно организовать через isinstance. Однако в питоне нет возможности через сам TypeVar проводить манипуляции с типами, поэтому только так.
Артем при вызове функции как использовать дженерики как в ts?
А что же будет после 31-го мая, другой курс?) Пока что звучит как выстрел себе в ногу
Нового курса не будет. После 31 мая нельзя будет попасть на курс.
В течение этого года хочу сделать рефокус с курса на свой IT продукт, на это нужно время. Поэтому я набираю тех людей, кто хочет изучить backend разработку и найти работу разработчиком, и закрываю вход.
Да норм. Дженерики и в курсе по фастапям пригодятся) полиморфные репозитории можно делать
С чего это вдруг динамическая типизация -- недостаток? Зачем вообще делают ЯП с динамической типизацией? Потому что статический анализатор написать не получилось?)
Потеря производительности + сложность отладки и обнаружения ошибок
да. потому что хотели упростить язык а такой статический анализатор как например у F# сразу не спроектировали. а потом язык взлетел и уже поздно делать ломающие изменения
@@DimaSamehada-vm7fw кому это нужно идут учить голанг
А какая может быть типизация у интерпретируемого языка? Лол. Статическая что ли? Сделайте питон компилируемым - будет вам статическая типизация
Артём, привет, почему так моргает свет в начале?
потому что я экспозицию на камере не научился настраивать :/
ничоси 😳 не зря я с# изучал 🤣
кст да, я тоже шарп учил. Почти всё, что там есть под капотом у шарпа, в питоне подключается отдельно)
но нет крутой лямбды, как в шарпе - увы
Щас бы говорить, что динамическая типизация, это недостаток...
Ушёл из активной питон-разработки уже несколько лет как. Если придется возвращаться, проще на что-то со статической типизацией, чтобы не заниматься этим онанизмом с аннотациями
Я, конечно, люблю питон (мой первый язык как никак), но от таких нововведений появляется ощущение, что они (разрабы) пытаются догонять другие языки в плане строгой статической типизации. Невольно появляется мысль "может сразу использовать джаву или шарп"... Но его сахарный синтаксис в каком-то смысле того стоит. Вот бы быстрый типизированный язык с удобным синтаксисом питона
Котлин как будто всё это совмещает)
Что за IDE? Это Pycharm?
Да
да, PyCharm Professional
@@artemshumeiko Просто тема приятная и шрифт, иконки ) Пытаюсь настроить так же, но чёт безуспешно (
@@set1qs так у него дефолтная тема и шрифт тоже дефолтный JetBrains Mono
@@set1qs включи новый UI
Только полный гуманитарий будет назначать одной и той же переменной разные типы. Или он не ПРОЕКТИРУЕТ свои программы, прежде чем начнёт их писать?
всмысле? В питоне все так делают, динамическая типизация же)
Выглядит как что-то, что делает код крайне трудночитаемым. Конструкция func[T](param: list[T]) -> T - это жесть.
тут дело времени
раньше тоже было тяжело смотреть на такое. Сейчас норма
@@artemshumeiko надо пробовать, но кстати в коде модулей стандартной библиотеки не встречал таких штук почему-то, видимо экзотика
Ок.
В Python с роду не было переменных. В самом начале ролика наврал).
Кто такие дженерики?
Это в java, net, go, rust.
Есть template в плюсах.
Общий код для разных типов.
Например без дженериков/шаблонов для списков значений int, double нужно будет делать две реализации. С ними - одну.
по простому: если ТипЗначения представить значением, то дженерик это переменная в которых их хранят и описывают функции не конкретными типами, а через эти переменные)
Дженерик это дешевый аналог бадов
Все проще простого воспринимай это как универсальные типы, которые можно изменять по обстоятельству динамически
это как в реальных проектах использовать
начать можно с небольших полезных функций (utils/helpers), их можно перевести на дженерики. Например, как в видео, функция, которая из последовательности данных извлекает первый ненулевой элемент
Странная практика буквы использовать. Это у вас в компании так принято? Почему [int] не написать?
так в этом суть дженериков. Делать функции с общим типом, без привязки к конкретному типу
В шарпе тоже принято в качестве дженерик-типа писать T или T + , например TKey, TValue
У языка Python нет минусов. Просто не надо язык, который был придуман для обучения новичков/скриптинга/прототипирования использовать для ВСЕГО. Конечно когда начинаешь все больше писать на нем промышленный код, тебе кажется что у него есть недостатки. А потом такие писальщики через пять лет, когда бекенд начинает загибаться, переписывают какую-то часть на производительных языках Go/Rust/C и такие с глазами по пять копеек.... о производительность в десять раз стала круче 😁😁 тучи развинулись, и молния Зевса открыла новый мир)
Сомнительно. Бизнесу нужно быстро, +уже во время разработки у бизнеса часто меняется требования и даже архитектура. В таких случаях "промышленные" языки могут отсохнуть и отвалится. По производительности, в какие сто раз может увеличится производительность, если основное время тратится не на обработку, а на транспорт данных по сети (т.е. фактор одинаковый для всех языков). Да и всегда ли производительность приоритет у бизнеса?
Дык для того и завозят в питон опциональную статическую типизацию, чтобы потоптать поляну более серьезных языков. Ибо доступен как профит динамического языка с его выразительным синтаксисом, так и надежность и удобство поддержки кода, которую дает типизация.
А скорость и потребление железных ресурсов за пределами настоящего хайлоада мало кого волнует. Ибо это в любом случае копейки на фоне стоимости разработки.
@@redneck_prm5429 т.е. типизация делает питон серьезным? а если делает получается у питона вышло совместить динамику и синтаксис с надежностью? и вряд ли кто то умышленно хочет потоптать поляны других языков, скорее собственный путь
@@redneck_prm5429 Все эти Python/Mojo Javascript/TypeScript свою работу делаю на "пол шишечки". Не вижу я в этом хороший архитектурный путь. Всегда там все внедряется на половину, потому что нужно ж сохранять совместимость с динамичным языком. Плюс они портят и размывают границы там где работу могут выполнять например джуниоры и их кусок пишется на скриптовых простых языках, а хардовую часть опытные разработчики пишут отдельно на предназначенном языке. И таким образом джуниор до поры времени не сталкивается с сложным кодом и не лезет туда куда не надо. А так какой смысл языка "для начинающих" если приходишь в компанию, а там на нем все написано и надо уже круто шарить.
"...А скорость и потребление железных ресурсов за пределами настоящего хайлоада мало кого волнует..." во первых плох тот проект, который не стремиться стать хайлоад. Странно писать сайт, которому завтра ты не хочешь популярности. А во-вторых ты просто не знаешь, какой твой проект завтра станет популярным. А вдруг он взлетит резко, потому что интересную программу/сайт написал. Нагрузка прет, а пересесть на другие технологии часто не получиться просто и дешево.
Да Python Javascript дают быстрый взлет, но всегда за быстрым наспех скроенными проектами тянется долгосрочные последствия по поддержанию этого проекта.
@@__.X3.__ Ну во первых есть разные задачи и сайты, не везде транспорт это львиная обработка, особенно так где сайт это онлайн-программы. во-вторых обработка транспорта тоже делается на каких то языках. И почему то в тестах фреймверков, когда меряются количеством фпс, я не сильно видел в лидерах фреймверки на Python. А лидерство берут все те же Go/Rust/C и т.д. Так что не отсохнут и не отвалятся 😄
Ого, що це?