Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Такое ли светлое будущее у Python?

Denis Anikin
September 28, 2023

Такое ли светлое будущее у Python?

Что стало причиной такой популярности Python? Простота или то, что третья версия поменяла язык целиком? И самое главное — куда язык идет?

Расскажу об изменениях Python: обозначу позицию языка в backend разработке, расскажу о новинках и порассуждаю, к чему язык и экосистема Python придут через несколько лет. Буду опираться на ту базу, которая закладывается в язык прямо сейчас, рассказывать про актуальные PEPы, вспоминать Language summit, доклады, статьи и экспертные мнения.

Denis Anikin

September 28, 2023
Tweet

More Decks by Denis Anikin

Other Decks in Programming

Transcript

  1. Денис Аникин 2 Что я делаю — работаю в Райфе

    — teamlead в 3 командах — community lead в Python Community — fullstack: typescript, python, devops — выступаю на конференциях и митапах https://xfenix.ru
  2. О чём будем говорить 3 —О прошлом языка —О том,

    где он сейчас —О том, куда он может прийти в будущем —Обсудим позиционирование —Важно: будем субъективны! —Важно: много будем говорить о настоящем и прошлом и мало о будущем
  3. Пару слов о субъективности 4 —У нас мало объективных данных

    —Любая попытка объективно оценить картину в головах многих обречена на провал —Обсуждая, мы создаём свою картину мира —Я не боюсь быть субъективным и вам предлагаю тоже
  4. Почему именно 2.х? 6 —Это прошлое ещё кто-то помнит —Не

    так давно эта версия была ещё немного актуальна —С приходом 3.х поменялось многое, если не всё
  5. Что мы можем сказать о позиции python 2.x 7 —Удобный

    язык общего назначения —Батарейки: можно делать всё, —GIL —Основная популярность это 2000-2015 годы
  6. И вот тут, неоднозначно 9 —Многие источники и моя память

    говорят, что для написания «скриптов» —Так же для веб разработки (django и flask довольно старые проекты) —Системного администрирования —Работы с данными (numpy и scipy это ооочень старые пакеты!)
  7. Python 3k 16 —Не так то сильно изменил язык —Умолчальный

    юникод —Print функция —__annotations__ уже в языке —Медленнее, чем python 2.5 (который медленнее 2.7)
  8. Это не проблема 34 —DS — крутая, если не ключевая

    область современности —DS — программисты (которые хорошо знают математику) —DS — программирование —DS — сложно
  9. А мы куда-то опаздываем? 37 Ок, ок, я шучу, но

    всё таки: —Медленное в бенмарках. Это грустно, но бенчмарки != реальной нагрузке —CPU-bound давно оптимизирован более, чем двумя десятками способов (pypy, taichi, numba, nuitka, cython, pyston) —В нормальных современных бекендах мы почти всегда можем горизонтально масштабироваться. Более того: под это заточены современные облака —Для I/O bound у нас есть хоть и не идеальная, но очень работоспособная асинхронность
  10. Неожиданное открытие 38 —В подавляющем большинстве случаев, люди, «сбежавшие» на

    другой язык не попробовали ускорить код на python никаким из множества способов —Способов около 20! —Зачастую есть производительные аналоги пакетов в языке (pandas -> polars, uvicorn -> granian, fastapi -> (расскажу в другом докладе), pydantic v2 -> msgspec) —Питон просто медленный потому что медленный
  11. Очень серъезные: Java GO Rust %your name it% Несерьёзный Python

    Программисты Серъезная задача
  12. Это популярный миф о языке, по сути 41 —Все, кто

    считают так, чаще всего не очень знакомы с языком или ушли от него по каким-то субъективным причинам (just for fun, например) —Миф базируется на питоне 2000х, который был не пределом мечтаний для крупных проектов —«Динамическая типизация» (аннотации!) —А что ещё? —В чём можно измерять серьезность языка?
  13. «Python — язык для новичков» Я больше 10 лет пишу

    на языке для новичков всякие серъезные штуки
  14. Python — простой и это плохо? 47 Это классические тейки

    ещё из прошлого (вспомним «фрактал плохого дизайна») —Низкий порог входа привлекает много непрофессионалов —Много непрофессионалов == плохой код —Общее низкое качество проектов —Низкое качество == нельзя расти как инженер, мало платят
  15. Python простой и это хорошо! 48 —Больше людей больше проектов

    —Больше проектов — больше возможностей роста —Больше возможностей — больше денег и шансов расти как инженер
  16. Python — вообще не простой, это зловредный миф 49 —

    Питон требует детального освоения — В питоне куча элементов функционального программирования — Аннотации типов везде и они сложные! Типы != аннотации типов и типы непростые! — Язык внутри устроен сложно — Около 100 дандер методов (каждый из которых входит в разные протоколы и с ними связано куча поведения «по договоренности») — Метаклассы… — Рефлексия и интроспекция — Асинхронность — Зависимости — Пути — exceptions
  17. О претензиях к asyncio 55 —Медленно! (по ряду тестов и

    сравнений, аналогичный синхронный код работает быстрее, но, естественно, в плане утилизации ресурсов проигрывает) —Подставлено сбоку —Нет нативного io_uring (асинхронной работы с файлами) —Сложно —Недостаточно удобно (gather, taskgroup, подводные камни create_task, разные другие части asyncio) —asyncio.sleep(0) —Хотелось бы супервизоры…
  18. Django в истории python 61 —Несмотря на критику, фундаментальный фреймворк,

    известный далеко за рамками экосистемы —На нём написаны многие десятки, а то и сотни тысяч систем, включая такие важные как sentry —Покрывает ниши MPA (корпоративные сайты, новостные сайты и т.п.), админок, прототипов и, частично, заходит на рынок микросервисов (Django ninja) —Появился ещё в 2004 и дал серьезный рост популярности python в бекендах
  19. Сверхновая в мире python на рубеже 2018/2019 63 Субъективно, как

    и многое другое, но всё же —Извлёк коллосальную пользу из аннотаций в рантайме, показав «так тоже можно!» —Принес DI, про который писали на stackoverflow/quorra буквально «нам в питоне это вообще не нужно!» —DI + DIP -> SOLID
  20. Наш ответ 66 На вопрос, который нам никто не задавал

    (не на всё) —Backoff (retry) —Pybreaker (circuitbreaker) —Ratelimit —AsyncIO (gather, taskgroup, asyncio.timeout) —Bulkhead (???)
  21. Чем хороши аннотации? 71 —Значительно увеличивают надежность —Снижают потребность в

    тестах —Gradual typing позволяет писать минимум —Мы можем извлекать пользу и на статическом этапе и на динамическом (fastapi, pydantic, msgspec, beartype, swagger) —Модуль typing прекрасен! —(слон в комнате) Нет доказательств, что статическая типизация превосходит аннотации или аннотации значительно проигрывают статической типизации
  22. Это любопытный проект 76 —Затаскивает CSP в Python —В 3.12

    можно будет делать отдельный GIL для каждого инстанса субинтерпретатора —Однако: нужно ли будет когда появится nogil?
  23. Что это за проект? 78 —Гвидо получил финансирование от Microsoft

    в 2019 году —И организовал команду из ключевых «игроков», для ускорения python —План прост: ускорять 4 релиза каждый раз на 50% и это даст ускорение в 5 раз —Пути достижения сложны: это более адаптивный байткод, это оптимизации исполнения, это JIT —Много ли это или мало? —Удалось ли с 3.10 достичь планов ускорения в 2 раза?
  24. Это фундаментально 80 —Питон лишится GIL в течении 5+ лет

    —Наконец-то можно будет параллельно запускать треды —Даст замедление в однопоточности… —Мнение 1: нужно ли в 2023 году и далее? —Мнение 2: это будущий прорыв
  25. Все звёзды: Шок! Ванга предсказала, что питон скоро переломит… Cool:

    Срочная новость. Ванга увидела в питонистах основной грех программи… Спидинфо 24: Провал! Гвидо предвидел обрыв для языка и поообщался с Вангой… Бомбоустойчивость лошади: Что? Ванга говорит, что питон — главный в пету… Теория Продольного Качения 24: Срочная новость. Ванга увидела в питонистах основной грех программи… Куриные Утехи: Провал! Пообщались с Вангой и питон НЕ ускорился в 5 раз. Как ускорить с помощью скотча?
  26. Базовый сценарий 85 —Все будет +- так же: стандарт де-факто

    в DS, популярность в бекендах, огромная популярность в devops —Проекты улучшения дадут свои плоды: популярность продолжит расти, т.к. больше задач будет решаться языком —GO нам не конкурент, а коллега: на GO будет писаться то, что не идеально пишется на python (cpu-bound) —JS, Ruby, PHP, Perl — где-то далеко позади на бекенде
  27. Негативный сценарий 86 —Питон перегрузится функциями и все поймут, что

    язык не просто не простой, он нереально сложный, запутанный и багованый —Ускорение языка не даст однозначного ускорения во всех ключевых сценариях, а местами даже даст замедление —NoGIL вызовет раскол сообщества из-за 2 несовместимых версий языка —Вылезет дисраптор (например, Mojo) —Все поверят, что аннотации плохой инструмент, проблемы typing и mypy станут серьезным аргументом в пользу этого мнения —Язык утеряет «веру» в себя —DS уйдут к другому языку —GO вместо питона в бекендах
  28. Позитивный сценарий 87 —Питон — язык номер 1 в бекендах

    —Стандарт в DS, конкурентов нет даже близко —Проект ускорения python даст прорыв, сравнимый с JS —На making cpython faster не остановятся —Возможно, перепишут питон с нуля —Python 4.0 всё таки станет реальностью —Появится AOT компилируемый python (нужен ли?) —Появится статически типизированный python (typescript?) —Возможно, появится виртуальная машина питона со статической типизаций —Питон станет главным языком на планете без всяких «но» —Разве у вас есть хоть какая-то альтернатива?