python 4 что нового
Ветеран Python-разработки рассказал, что он хочет видеть в Python 4
Канадский программист Андрэ Роберге опубликовал в своём блоге любопытную запись. В ней ветеран разработки на Python, использующий язык последние 17 лет, описал, чего он ждёт от следующей номерной версии языка — Python 4.
По словам Роберге, он очень надеется на плавный переход от третьей версии к четвёртой. Речь идёт о поддержке кода, написанного на предыдущей итерации языка. Так, код, написанный, скажем, на Python 3.14 должен нативно запускаться на Python 4.
Но самым главным нововведением, которое разработчик ждёт от масштабного обновления, является появление «диалектов» (dialects).
Что такое «диалекты»?
Это модули со своей семантикой, расширяющие возможности языка. В качестве примера использования диалектов Роберге приводит язык Rackets. Но если в нём пользователи сами могут создавать новые «диалекты», в Python разработчик предлагает ограничиться четырьмя.
Какие «диалекты» предлагаются для Python?
Main (Основной). Он будет представлять из себя стандартный Python, каким мы его знаем уже сейчас.
Experimental (Экспериментальный). Этот «диалект» предлагается использовать для демонстрации и обкатки новых фич. В нём будет отсутствовать гарантия на обратную совместимость, но при этом пользователи смогут экспериментировать с новым синтаксисом.
Beginner (Начальный). Эта вариация языка будет разрабатываться с прицелом на новичков. «Начальный диалект» уже будет включён в «Основной» по умолчанию. В нём также будут определённые ограничения, которые уберегут начинающих программистов от совершения большинства ошибок. Появятся и новые конструкции, которые облегчат разработку на начальных этапах изучения Python.
Static (Статичный). Этот «диалект» будет нацелен на скорость выполнения кода. Для этих целей, например, будут недоступны некоторые динамические возможности языка.
Гвидо ван Россум: Python 4 может не быть
В майской Q&A-сессии создатель Python Гвидо ван Россум говорил о будущем языка и его нумерации. По словам программиста, версия «Python 4.0» может так и не увидеть свет, а среди разработчиков почти грех серьёзно вести речь о ней после болезненной миграции с Python 2 на 3 в 2008 году.
В майской Q&A-сессии создатель Python Гвидо ван Россум говорил о будущем языка и его нумерации. По словам программиста, версия «Python 4.0» может так и не увидеть свет, а среди разработчиков почти грех серьёзно вести речь о ней после болезненной миграции с Python 2 на 3 в 2008 году.
«Я не в восторге от идеи про Python 4, как и все остальные участники основной команды разработчиков. Так что, скорее всего, версия 4.0 никогда не выйдет и мы просто продолжим нумерацию минимум до 3.33», — рассказал ван Россум в интервью.
«Сейчас Python 4 если и упоминается среди основной команды разработки, то лишь в шутку… Мы получили хороший урок, когда переходили с Python 2 на 3, поэтому всерьёз говорить о Python 4 — почти табу», — продолжил он.
Последний релиз Python 2.7 за номером 2.7.18 состоялся в апреле 2020 года. Ван Россум предупреждал, что Python 3 не будет совместим с Python 2. Для команды процесс внедрения новой версии был трудным и медленным, растянувшись на годы — и разработчики не горят желанием проходить его снова.
Тем не менее ван Россум полностью не исключил возможность релиза Python 4.0, но добавил, что это произойдёт только в случае существенных изменений, имеющих отношение к совместимости с языком С.
В октябре ожидается релиз Python 3.10, а выпуск 3.11 в следующем году будет ещё значительно производительнее предыдущего. Ван Россум подчеркнул, что команда намерена выпускать поэтапные обновления языка в течение максимально длительного срока.
«У нас строгий ежегодный график релизов, поэтому после [Python 3.10] будет 3.11, потом 3.12 и так далее. Мы можем дойти до 3.99, и тогда придётся добавить ещё одну цифру. Добавить цифру — не такая уж мелочь, но это намного лучше, чем переходить с версии 3 на 4».
«Рост производительности Python будет поэтапным. Сначала ускорится версия 3.11, потом мы ещё больше ускорим его в версиях 3.12, 3.13 и т. д.» — отметил ван Россум.
Оптимизация производительности Python — главная задача, которая сейчас стоит перед разработчиками. На саммите Python Language Summit в этом мае Гвидо ван Россум заявил, что к выпуску 3.11 команда планирует достичь двукратного увеличения производительности CPython.
Гвидо ван Россум: не надейтесь на выход Python 4.0
Редактор новостей Highload
Новая версия языка программирования Python 4.0 может никогда не выйти. Об этом в интервью Microsoft Reactor рассказал создатель Python Гвидо ван Россум. По словам разработчика, «почти табу говорить о Python 4.0 после трудной миграции с версии 2.0 на 3.0 в 2008 году».
Болезненная миграция
Гвидо ван Россум сказал, что он и члены основной команды не в восторге от идеи Python 4.0, так что, вероятнее всего, новая версия языка программирования никогда не выйдет. Вместо этого разработчики планируют продолжить нумерацию до версии 3.33 как минимум.
Ван Россум не исключил полностью возможность выхода Python 4.0. Он предположил, что, скорее всего, это произойдет только в случае серьезных изменения совместимости с языком программирования С, таких как, например, отказ от определенных двоичных файлов или совместимости с API для расширений С.
Планы по улучшению Python
В связи с ожидаемым в октябре Python 3.10 и некоторыми значительными улучшениями скорости в версии 3.11, ван Россум подчеркнул, что основное внимание уделяется выпуску инкреметных (постепенных) обновлений языка программирования на как можно более длительный срок.
Ускорение Python — основная задача команды разработчиков, об этом ван Россум объявил на языковом саммите. По его словам, они стремятся удвоить производительность CPython в версии 3.11.
Гвидо ван Россум отметил усилия по ускорению языка с помощью внешних проектов, таких как Pyston (реализация Python 3.8.8, которая началась в Dropbox до того, как была открыта исходная версия). Его создатели недавно выпустили Pyston 2.2, который обещает повышение производительности на 30% по сравнению с CPython 3.8.8.
В ходе интервью ван Россум также поделился мыслями о других языка программирования, сказав, что восхищается способностью Rust улучшать код C++ и назвал Go одним из самых интересных новых «питонических» языков программирования.
Что нового появилось в Python в 2021 году?
Краткая история Python
Python был разработан около тридцати лет назад, первая его официальная версия вышла в 1991 году и имела номер 0.9. После этого довольно долгое время язык развивался, и популярность он получил в 2000-х годах, во время мажорной второй версии. Однако уже тогда было понятно, что в языке необходимы изменения, которые будут обратно несовместимы с текущими версиями, такие как например, изменения в поведении юникодных строк. Однако вторая версия Python была уже очень популярна к этому моменту, поэтому третья работа над третьей версией велась одновременно с работой над 2.7. Довольно долго у core-разработчиков Python не было определенной стратегии, поэтому до версии 3.4 изменения были довольно хаотичны.
С 2019 года Python адаптирует годичные релизные циклы. Это изменение было представлено в PEP-602 Что это значит для пользоватеоей Python?
What’s new in Python 3.9?
Релиз Python 3.9 произошел 2020-10-05. Рассмотрим что есть нового в этой версии.
Работа со словарями
Допустим, есть два словаря, которые мы зотим объединить.
В версиях до 3.9 можно было бы сделать таким образом:
Синтаксис ** разворачивает словарь, и когда они объединяются, более позднее значение затирается более новым. Аналогичные дейтсвия можно совершить, если использовать следующий синтаксис:
Этот способ пойдойдет в случае если нужно изменить первоначальный словарь.
В библиотеке collections есть объект ChainMap, который тоже обхединяет словари, но его результатом будет объект ChainMap, а не словарь. Он состоит из нескольких словарей, следующих друг за другом. Если взять значение по ключу, то вернется то значение, которое встречается раньше. То есть, в этом примере для ключа 2019, вернется значение Cleveland
В Python 3.8 был представлен walrus-оператор. С его помощью можно решить проблему примера с update и скопировать словарь в новую переменную:In [11]:
В Python 3.9 в PEP-0614 добавлен синтаксис | (читается как pipe), который объединяет словари аналогично первому примеру:
При этом первоначальный словарь не меняется:
Если все-таки нужно обновить первоначальный словарь, можно воспользоваться синтаксисом |= (работает по аналогии с +=): a |= b a = a|bIn [16]:
Важно помнить, что поскольку более поздние значения перезаписывают более ранние значения, эта операция может быть не коммуникативна.
Синтаксис | работает только непосредственно со словарями, тогда как синтаксис ** работает и с orderedict и с другими подобными словарям объектами.
Изменения в работе с декораторами
До версии 3.9 в качестве декораторов могли выступать функции или классы, но не такие объекты как списки или словари. Рассмотрим пример, в котором это будет удобно использовать. Допустим есть UI-приложение с кнопками, и нужно добавить какое-то сообщение по нажатию на каждую кнопку. Было бы удобно это сделать с помощью декоратора, но что делать, если для каждой кнопки нужно печатать различные сообщения. Это можно сделать следующим образом:In [ ]:
Создаем list comprehension из функций, явно присваем объектам значения элементов списка, и их можно использовать в качестве декораторов. Это будет работать, однако не будет эффективно, если объектов из которых будут созданы декораторы, будет достаточно много.
Это не единственный способ, но другие будут довольно неоднозначными. Рассмотрим два из них. В первом случае создадим функцию, которая будет возвращать необходимую для декоратора функцию:In [ ]:
Использование eval :In [ ]:
В Python 3.9 стало возможно создавать декораторы из любых объектов, например из элементов списков и словарей. Можно рассмотреть синтаксис, который реализует тот же самый пример:
Похожим образом будет выглядеть синтаксис для значений словаря:
Изменения в синтаксисе типирования
Дженерики
Дженерики это типы, которые могут быть параметризованы, обычно являются контейнерами, например dict. Параметризованные дженерики это типы, для которых указан внутренний тип, например dict[str, int]
Начиная с Python 3.7 стало можно указывать тип объекта, конкретизируя тип внутренних элементов контейнеры. Но для этого нужно было импортировать таки типы как List из модуля typing :
Можно было не конкретизировать тип внутренних значений, для этого не нужно было импортировать дополинтельные типы и можно было использовать стандартные типы dict и list. Благодаря этому нововведению, внешние библиотеки такие как Mypy стали распознавать дженерики.
Также, в версии 3.9 стало можно пользоваться аннотациями без явного их импорта из модуля __future__
Расширение возможностей аннотаций
Аннотации были доступны для использования и в более ранних версиях Python, однако их функция была скорее информационной, использовались они в первую очередь для документации. Синтаксис использования аннотаций до Python 3.9 выглядел таким образом:
В Python 3.9 появился новый объект типа Annotated, который принимает на вход два аргумента, первый это реальный тип, которым должен обладать аннотриуемый объект, а второй это название для целей документации:
Когда происходит проверка аннотаций, проверяется только первый аргумент, в котором находится «реальный» тип объекта, а второй использовуется как и в предыдущих версиях:
Изменения связанные с часовыми поясами
Однако начиная с Python 3.9 появился модуль zoneinfo, который содержит информацию о часовых поясах и позволяет создавать объекты им соответствующие:
В стандартной библиотеке не было информации ни о каких часовых поясах, кроме utc, и необходимо было использовать pytz чтобы создать объект, содержащий информацию о часовом поясе. Теперь это можно сделать без установки дополнительных библиотек:In [32]:
Новые методы работы со строкам
Python 3.10
Последняя версия Python 3.10 это 0b3, которая вышла 17 июня 2021 года. Согласно расписанию релизов, полноценный релиз появится примерно в октябре 2021. Пока официального релиза нет, версия не доступна в пакетных менеджерах (таких как brew). Соответственно, чтобы ее установить, билд нужно скачать вручную с www.python.org и уствноваить на своей машине. Рассмотрим изменения, доступные в этой Python 3.9.
Pattern Matching
В более ранних версиях Python если нужно описать различное поведение, в зависимости от того, какой объект используется, скорее всего будет использоваться условный оператор:In [ ]:
Однако в Python 3.10 вместе с PEP-0635 будет добавлен новый оператор match, который может использоваться с case:In [ ]:
Также с его помощью будет удобно реализовывать, например, обработку ошибок:In [ ]:
Это одно из самых «громких» нововведений в последних версиях Python и возможно самое ожидаемое коммьюнити.
Более удобное использование Union для типирования:
Если раньше чтобы указать, что аргумент функции может быть одним из нескольких типов, необходимо было использовать Union, импортируемый из пакета typing:In [ ]:
То начиная с Python 3.10 можно будет заменить его оператором pipe | и, соответственно, избавиться от импорта:In [ ]:
Контекстные менеджеры
Более информативные сообщения об ошибках
Наверняка многие из читателей сталкивались с тем, что сообщение об ошибке слишком общее и само по себе не говорит о том, что нужно сделать чтобы ошибку исправить. В новой версиеи Python core-разработчики улучшили самые распространенные из них и теперь сообщения об ошибках будут намного более читабельными:In [ ]:
Остальное
Это не все изменения которые попадут в Python 3.10, с полным списком можно ознакомиться посмотрев список изменений.
Заглянем в будущее Python
На конференции Russian Python Week 2020 мы пообщались с двумя людьми, от которых непосредственно зависит будущее Python.
На наши вопросы ответили Core-developer community on Google Cloud Дастин Инграм и Director at Python Software Foundation Кэрол Виллинг. Заглянув под кат, вы узнаете, чего не хватает языку, и как он будет развиваться дальше.
Многие Python разработчики не очень много знают про PSF, чем он (фонд) занимается?
Дастин Инграм: Python Software Foundation (PSF) — американская некоммерческая организация, работающая по всему миру. Ее цель — продвижение Python. PSF принадлежат связанные с Python права интеллектуальной собственности, включая права на логотипы. Кроме того, организация привлекает средства, обеспечивающие дальнейшую разработку Python, а также финансирует сопутствующие проекты.
В PSF всего пара оплачиваемых сотрудников: исполнительный директор, директор по инфраструктуре и несколько бухгалтеров. Организацию возглавляет совет из 11 директоров, работающих на добровольных началах.
Python — язык с открытым исходным кодом. Как финансируется организация разработки и деятельность постоянных сотрудников, поддерживающих работу Python-сообщества?
Кэрол Виллинг: Python, как язык программирования, не приносит прибыли. Но я была директором PSF и занималась привлечением средств через проведение конференции PyCon. Основная часть финансирования приходится на пожертвования и поступления от организаций в США. Именно они позволяют нам оплачивать множество вещей, включая работу персонала и гранты, которые мы реализуем по всему миру
Дастин Инграм: Да, сам Python не приносит денег, а PSF получает большую часть средств (а это несколько миллионов долларов США в год), главным образом, благодаря конференциям PyCon. PyCon US приносит около 85% прибыли, за счет которой и работает PSF. Оставшаяся часть финансирования обеспечивается пожертвованиями и поддержкой спонсоров. Также среди соучредителей PSF есть крупные компании, такие как Google, Microsoft и Amazon. Они финансируют проекты в большей или меньшей степени и помогают PSF держаться на плаву.
Как стать директором PSF?
Кэрол Виллинг: Раньше совет директоров переизбирался ежегодно в полном составе. Со временем мы поняли, что переизбирать отдельных директоров через определенные промежутки времени намного эффективнее.
Дастин Инграм: Номинироваться на должность директора может любой желающий. Это легко — достаточно написать заявление на участие в выборах. Гораздо сложнее в них победить. Как правило, сообщество выбирает на должности директоров людей, которые постоянно и на добровольных началах участвуют в деятельности сообщества Python и уделяют много времени развитию организации.
С другой стороны, хотя директора и руководят деятельностью PSF, они, как и штатные сотрудники, небольшая часть того, что необходимо для деятельности организации. Большая часть работы выполняется людьми на добровольных началах. Эти люди не избираются и не получают денег за свою работу по развитию экосистемы. Но они участвуют в разработке ядра Python и всего, что с этим связано. Именно их вклад обеспечивает дальнейшее развитие и продвижение языка.
Как конкретный человек может участвовать в деятельности PSF?
Кэрол Виллинг: Во-первых, вы можете быть представителем Python в сообществе вашей страны. Со временем вы можете участвовать в жизни сообщества все больше, брать на себя ответственность за организацию или выбрать то, что интересует вас.
Дастин Инграм: По-моему, многие считают, что единственный способ участвовать — стать основным разработчиком или работать непосредственно с ядром Python. Но существует множество других способов участвовать в жизни сообщества. Например, заниматься сторонними проектами в репозитории PyPI или экосистемами. Можно участвовать в рабочих группах, которые не занимаются ядром Python. Такая деятельность не менее важна, чем работа над языком.
Кэрол Виллинг: Вам не обязательно участвовать в разработке ядра. Многие участники экосистемы Python организуют работу сообщества, проводят конференции и выступают на них. Они занимаются обучением, а также пишут документацию. Внести ценный вклад можно по-разному.
Дастин Инграм: Особую роль играет обучение. Python становится чрезвычайно популярным. В следующие десять лет появятся миллионы новых разработчиков. Поэтому чем больше мы делимся своими знаниями, делая сообщество более привлекательным, тем более успешным будет Python в будущем.
Расскажите про статус, цели и проекты организации PSF на GitHub.
Дастин Инграм: Наша организация на GitHub поддерживает множество проектов PSF, которые не относятся к ядру Python, включая такие масштабные проекты, как PyPI. Одновременно мы поддерживаем проекты сообщества. Например, недавно нам был передан популярный проект Requests. Хотя такие проекты не относятся напрямую к языку Python, они очень важны для экосистемы.
Также мы предоставляем репозитории для различных рабочих групп, которые не участвуют в разработке ядра Python. Например, мы недавно организовали рабочую группу по финансированию критически важных проектов языка. Эта рабочая группа успешно привлекает внешнее финансирование от организаций и компаний для реализации конкретных проектов Python. Так, за последние пару лет большие суммы пожертвовала компания Mozilla.
Что изменилось после выхода Гвидо Ван Россума на пенсию?
Дастин Инграм: Выход Гвидо на пенсию связан и с PEP, и с моделью управления разработкой Python в целом. В предыдущей модели управления Гвидо был пожизненным диктатором, имеющим решающее слово по все вопросам, связанным с Python. Так не могло продолжаться вечно. В какой-то момент ситуация должна была измениться, хотя многие не ожидали, что перемены наступят так быстро. Гвидо работал над Python большую часть жизни и просто устал, в том числе от всех дополнительных забот.
Поэтому когда он вышел на пенсию, то заставил оставил сообщество задуматься, что делать и как создать новую модель управления, потому что после ухода диктатора всегда остается вакуум.
Кэрол Виллинг: Отставка Гвидо была полной неожиданностью. Мы надеялись, что с у нас впереди есть еще несколько лет.
Однако жизнь продолжается, и мы создаем новую модель управления разработкой Python. В течение пары месяцев мы изучали другие проекты с открытым кодом, в которых мы участвовали или о которых нам было известно. После чего сформулировали PEP с описанием различных моделей. Основные разработчики Python собрались на мозговой штурм в Сиэтле. На круглом столе, в котором принимал участие и Гвидо, мы обсудили, что нам нравится в Python, и как нам необходимо развиваться в будущем. Большинство проголосовало за модель под управлением Наблюдательного комитета, чтобы обеспечить максимальную автономность разработчиков.
Процесс обсуждения открыл нам глаза на то, как много лежало на плечах Гвидо — организация совместной работы разработчиков, решения о выходе из технических тупиков, пересмотр предложений по расширению и т. д. Сейчас эта работа распределена между пятью членами руководящего комитета. Они еженедельно обсуждают возникающие вопросы, в том числе касающиеся культуры и сообщества основных разработчиков. Мы планируем выбрать новый руководящий комитет вскоре после выпуска следующей версии Python.
В настоящее время опубликовано много новых PEP-предложений по расширению. Какие из них вам запомнились больше всего, а какие вы считаете спорными?
Дастин Инграм: Я обычно шучу, что мое любимое предложение то, которое я подготовил сам. Из недавних мне больше всего нравится PEP 615, которое добавляет базу данных часовых поясов в стандартную библиотеку Python. Мне кажется, этого очень не хватало.
Мне также очень нравится новое предложение PEP 632, которое удаляет из основного кода Python модуль distutils. Этого мы ждали уже очень давно. Модуль хоть остается в стандартной библиотеке, но не рекомендуется и фактически не поддерживается. Удаление этого модуля упростит жизнь пользователей, которые не очень хорошо разбираются в экосистеме репозитория.
Кэрол Виллинг: Я читаю очень много поступающих предложений по расширению. И мое мнение основано на идеях о том, как бы я использовала конкретное предложение в Jupiter или в рамках научного программирования. Меня заинтересовало предложение по сопоставлению с образцом (pattern matching). Мы встречались с группой, которая его разрабатывает, чтобы обсудить существующие возражения. Фактически мы уменьшили количество новой информации в предложении и сделали его более понятным. Я хочу быть уверена, что мы можем научить миллионы пользователей языка Python использовать сопоставление с образцом и предложить им самые передовые методы.
Другое интересное и заинтриговавшее меня предложение относится к удалению некоторых модулей из стандартной библиотеки или выносу за ее пределы. Одно из преимуществ Python — отличная экосистема сторонних библиотек. Если у модуля из стандартной библиотеки есть лучшая сторонняя альтернатива, нет смысла его там держать функциональность в стандартной библиотеке и создавать у пользователей впечатление, что мы ее активно поддерживаем.
Дастин Инграм: Многие функции были добавлены в стандартную библиотеку еще до появления PyPI или до того, как он стал надежно работать. Сегодня PyPI предоставляет множество интересных проектов, поэтому спрос на такую же функциональность в стандартной библиотеке уменьшается.
В наших PEP мне очень нравится раздел «Как этому научить». Он есть даже в шаблоне PEP и должен описывать способы донесения новых предложений до широкой аудитории. PEP предназначены для технических специалистов, и их авторы обычно не надеются, что каждый пользователь Python сможет понять суть предложения. Но нам необходим способ доступно излагать новые идеи для более широкой аудитории.
Кэрол Виллинг: Мне очень нравится раздел PEP о том, как объяснять новые предложения. Если вы не можете пояснить идею, никто не будет ей пользоваться, кроме очень опытных пользователей, и только в определенных случаях. Но если вы можете предоставить хотя бы рекомендации о том, как и когда вашу идею можно применить, это упростит жизнь всем остальным.
Сопоставление с образцом — достаточно спорная концепция в Python, и ее очень сложно объяснить. Даже некоторые специалисты с опытом функционального программирования не понимают, как и когда правильно ей пользоваться.
Кэрол Виллинг: Это целый букет проблем. Сопоставление с образцом имеет как базовые, так и факультативные элементы. Оно использовалось в индустрии телекоммуникаций — в, в Erlang, Elixir, Scala и почти всех функциональных языках. Мне кажется, что принципы сопоставления с образцом отлично разъясняются в документации по Elixir. Иногда объяснение сложнее, чем необходимо, из-за терминологии. И все становится намного понятнее, если привести понятные примеры. Я думаю, что все противоречия больше связаны с PEP, чем со сложностью сопоставления с образцом.
Что вы думаете о Global Interpreter Lock? Это проклятие или преимущество?
Кэрол Виллинг: Это концепция из другого времени. Python уже 30 лет, и некоторые решения, которые сделали язык гибким, простым и успешным, относились к его объектной модели. Раньше Python отличался от таких языков, как C, C++ или Java намного более четким синтаксисом, даже визуально. Сейчас для ускорения некоторых операций Python можно использовать, например, Cython.
Если оценивать производительность разных языков программирования, все зависит от того, что вы под ней понимаете. Если речь идет о скорости выполнения, выиграет C. А если о продуктивности разработчиков, Python выигрывает благодаря легко читаемому коду, богатой экосистеме библиотек, опытному и готовому делиться знаниями сообществу
Python ищет способы увеличить скорость выполнения, в том числе благодаря финансированию, я надеюсь, PSF и основная команда смогут это предложить.
Дастин Инграм: Будет здорово, если Python сможет обеспечить высокую производительность, удобство и безопасность. Но он также предлагает очень мощные инструменты для перехода на более производительный язык, в случае необходимости. Это одно из основных свойств Python, которое сделало этот язык популярным, а также повлияло на известность сторонних проектов, таких как NumPy.
Кэрол Виллинг: Я параллельно работаю над проектом Jupiter Project. Jupiter Notebook, один из важнейших инструментов Python, стал намного более популярным, чем мы ожидали. Я думаю, что причина этого заключается в легкости использоваться библиотек. Особенно для пользователей, далеких от программирования, которые приходят из области естественных, общественных и других наук. Причина заключается, скорее, в описании и визуализации, чем в коде.
Это также демонстрирует важность сообщества. Несколько лет назад в команде проекта Jupiter Project было меньше 20 человек, из которых только 10 работали постоянно. Рост его популярности, в основном, обеспечило именно сообщество. Также как оно обеспечивает развитие Python в целом.
Вы собираетесь увеличивать скорость Python, например, как PHP? Планируете ли расширять типизацию, добавлять финализированные классы, интеграцию ABC? Будет ли что-то новое в обработке исключений?
Кэрол Виллинг: Я думаю, мы достаточно подробно обсудили производительность и скорость. По поводу типизации у меня смешанные чувства. Я признаю ее преимущества в системах больших компаний, где необходим статический анализ до выполнения кода. Поскольку я проверяю код чаще, чем пишу, для меня применение статической типизации является непростым делом. Много лет назад Python меня заинтересовал именно отсутствием обязательной типизации. Она не обязательна и сейчас, и я считаю это правильным решением. Однако в некоторых случаях, например, в Pydantic, где вы используете API, типизация позволяет намного проще и быстрее создавать основные документы. Она важна также для производственного ПО, но для разработки и экспериментов с CircuitPython или MicroPython в ней нет необходимости.
Я надеюсь, кто-нибудь когда-нибудь создаст редактор, который позволит включать и отключать типизацию по желанию.
Дастин Инграм: Мне нравится статическая типизация. Это мощный инструмент в Python. Но мне также нравится, что она не обязательна, и ее можно добавлять постепенно. Я не думаю, что такое положение дел изменится. По-моему, участники сообщества еще недостаточно часто используют типизацию в своих рабочих процессах. Для обычного пользователя Python, который не работает в крупных компаниях, она не нужна.
Возможно, через некоторое время, когда статическая типизация будет использоваться шире, мы будем добавлять новые инструменты, например, типизацию для сторонних пакетов.
Когда нам стоит ждать Python 4.0?
Кэрол Виллинг: Python 4.0 выйдет в отдаленном будущем. Сейчас мы будем выпускать Python 3.10, 3.11, 3.13 и т. д. В настоящее время нет масштабных проектов, которым нужен 4.0. И я уверена, что выпускать следующую версию в таких условиях не в интересах сообщества. Поэтому сейчас мы поэтапно развиваем язык, концентрируясь на его стабильности.
К тому же в прошлом году было опубликовано предложение, предлагающее сократить цикл выпуска новых версий. Обновления каждые полтора-два года приводят к слишком ощутимым изменениям для людей, использующих их в исследовательских лабораториях или в компаниях. Так что Python 4.0 можно ждать, пожалуй, к 2100 году.
Что нужно делать, чтобы войти в основную команду разработчиков Python?
Кэрол Виллинг: Стать основным разработчиком Python очень круто, если вы помешаны на языке и стремитесь заниматься именно им. Энтони Шоу (Anthony Shaw) в своей новой книге отлично объяснил, как работает Python. Но если вы не хотите заниматься именно языком, у вас есть огромное количество возможностей участвовать в развитии экосистемы проектов, включая, например, PyPI и NumPy.
Но не забывайте, что основной целью Python является стабильность, и только потом — широта возможностей. В других проектах цикл от идеи до внедрения намного короче, и вы можете более свободно принимать решения о том, что следует добавить в проект. Нет, я не отговариваю от участия в разработке ядра Python. Нам, конечно же, нужны разработчики, и их число постоянно увеличивается. Но я уверена, что опыт, полученный при работе над другими проектами тоже может быть очень богатым и ценным.
Дастин Инграм: Чем больше времени и сил вы тратите на внешние проекты, тем больше пользы вы приносите. Например, я принял решение не участвовать в разработке ядра, потому что могу быть больше полезен для проектов, которым нужна поддержка, а с другой стороны — они могут оказать больше влияния на сообщество. Я считаю, что это, например, инструменты разработки пакетов и PyPI, и я уже вижу большие изменения. А если бы я был основным разработчиком, это сильно повлияло на экосистему Python.
Кэрол Виллинг: Еще с 2014 года я говорю о том, что нам нужно улучшать процесс разработки ядра Python и делать его более современным. Поэтому мы перенесли код на GitHub. Это был только первый шаг, но он оказался правильным, потому что открыл для нас все инструменты непрерывной интеграции. Сегодня можно намного проще участвовать в разработке благодаря возможности тестирования и оценки результатов CI. Я надеюсь, когда мы перенесем список задач и ошибок на GitHub, желающим стать основным разработчиком, станет еще проще.
Перенос система отслеживания ошибок — это большой проект. Вы планируете реализовать его на платной основе?
Кэрол Виллинг: Вспомните 30-летнюю историю развития языка — историю исправления ошибок, версий, продвижения, перехода на новые платформы. Это не самый простой процесс. Кроме того, нам приходится поддерживать открытый формат, чтобы иметь возможность, если GitHub вдруг перестанет существовать, переместиться на другую площадку или создать собственную. И сделать это надо будет без прерывания процессов, к которым привыкли пользователи. Напротив, мы должны добавлять рабочие потоки. Кроме того, появилось много новых инструментов, в том числе благодаря более широкому использованию JavaScript, и я думаю, что дополнительное финансирование и правильное управление проектами позволит сделать переход более плавным.
Иногда работа на добровольных началах означает, что вы не можете уделить проекту достаточное количество времени. Поэтому лучше отдать его под руководство менеджеру, который сможет обеспечить его непрерывную реализацию. Оплачиваемое управление проектом в таком случае — самое эффективное решение.
Многие уверены, чтобы стать разработчиком ядра Python, нужно знать язык C. Дело обстоит именно так или можно сосредоточиться на чем-то еще?
Кэрол Виллинг: C требуется, только если вы углубляетесь во взаимодействие с оборудованием или управление памятью. Как я уже говорила, блог и книга Энтони Шоу отлично демонстрируют случаи, когда необходим C. Но, например, большая часть стандартной библиотеки его знания не требует.
Дастин Инграм: В настоящее время почти все проекты, встроенные в стандартную библиотеку, написаны на Python.
Как должность разработчика Python и директора PSF изменила вашу жизнь и повлияла на вашу карьеру?
Кэрол Виллинг: У меня стало намного меньше свободного времени, потому что я работаю на добровольных началах. Но для меня в этой работе важно не то, как она влияет на мою карьеру, а то, что я участвую в создании языка, который используется многими. Здорово, что я могу дать людям с отличными идеями инструменты для реализации. Да, меня теперь больше приглашают на конференции, в том числе в качестве докладчика. Но я не думаю, что это как-то влияет на мою карьеру.
Дастин Инграм: Я недавно стал директором PSF. Иногда во время собеседований на новую работу я рассказывал, что очень активно участвую в сообщества Python на добровольных началах, работодателя волновало только, не занимаюсь ли я этим в рабочее время. Я думаю, что многие просто не понимают, как поощрять работу над открытым кодом.
Однако свою текущую работу в качестве Developer Advocate for the Python community в Google я получил благодаря моему опыту работы с сообществом Python. От меня требовались знания о том, как работает сообщество, как оно построено и какие инструменты использует. Однако мои должностные инструкции не предусматривают, что началах.
Кэрол Виллинг: Я хочу быть уверена, что тем, кто хочет участвовать в разработке Core Python, следует быть вежливыми, но настойчивыми. Мы работаем с огромным количеством людей, у которых очень мало времени. Поэтому время, которое они посвящают Python, нужно использовать эффективно. Чтение руководств для я должен быть директором и выполнять дополнительную работу на добровольных разработчиков и просмотр вебинаров на YouTube о разработке на Python могут помочь вам стать участником сообщества. Присоединяйтесь к нам!
Видео доклада можно посмотреть здесь.
Профессиональная конференция для Python-разработчиков пройдет 27 и 28 сентября в Москве. Но посмотреть расписание и выбрать самые интересные доклады можно уже сегодня.
Не забудьте купить билеты. Встречаемся в офлайне в конце сентября!