LINUX.ORG.RU

Гвидо ван Россум покидает пост BDFL языка Python

 


3

7

Создатель и один из основных разработчиков языка программирования Python Гвидо ван Россум объявил о том, что устраняется от принятия дальнейших решений о развитии языка. В течение какого-то времени он продолжит выполнять функции рядового разработчика и консультировать команду, но фактически Гвидо складывает с себя полномочия «великодушного пожизненного диктатора» (benevolent dictator for life, BDFL), которыми он обладал 27 лет с момента создания языка. Сейчас в списке рассылки python-committers идет дискуссия о новой модели управления разработкой Python.

Гвидо принял решение после утверждения PEP 572 «Assignment Expressions» (Предложение об улучшении языка №572 — «Выражения присваивания»), вокруг которого в сообществе разработчиков и пользователей языка развернулись ожесточенные дискуссии. «Я больше не хочу когда-либо сражаться за PEP и видеть, как множество людей презирают мои решения» — сказал ван Россум.

PEP 572 добавляет в язык выражение присваивания вида var := some_expression и будет реализовано в Python 3.8 (сейчас присваивание является оператором, не вырабатывающим значения).

Сегодня днем на рассылку разработчиков языка Python пришло письмо следующего содержания:

Теперь, после того, как PEP 572 утверждено, я больше не хочу когда-либо сражаться за PEP и видеть, как множество людей презирают мои решения.

Я хотел бы полностью устраниться от процесса принятия решений. Я все еще буду какое-то время участвовать в разработке в роли рядового разработчика, и я буду доступен для консультаций, возможно, больше, чем прежде. Но я, по сути, ухожу в бессрочный отпуск с позиции BDFL, и вам придется существовать самостоятельно.

Так или иначе, рано или поздно это все равно должно было случиться — автобус всё еще подстерегает за углом, и все мы не молодеем... (Не буду вдаваться в подробности о состоянии своего здоровья.)

Я не планирую назначать своего преемника.

Так что вам придется самим решать, как быть дальше. Установить демократию? Анархию? Диктатуру? Федерацию?

Я не думаю, что мой уход серьезно затронет повседневные решения по задачам в трекере и на GitHub. Моим мнением там интересуются очень редко, и на самом деле, как правило, оно не так важно. Так что в этом плане дела будут идти своим чередом.

Наиболее существенные решения, которые мне приходилось принимать, это, пожалуй:

  • Какая судьба ожидает новые PEP
  • Принятие новых разработчиков языка в команду

Мы можем оформить эти процедуры в виде PEP (возможно, эти PEP составят своего рода конституцию языка). Но суть такова: я хочу попробовать дать вам (текущим разработчикам) самим решить все это для себя.

Обратите внимание, что вы все еще обязаны подчиняться Правилам поведения сообщества — если вы не согласны с этим документом, пожалуй, единственный выход для вас — добровольно покинуть эту рассылку. Возможно, нам еще стоит обсудить, не стоит ли кого-то исключить отсюда (тогда придется заодно исключить их и из рассылок python-dev и python-ideas, так как они тоже подчиняются Правилам).

И последнее — напоминаю, что архивы этой рассылки публичны (https://mail.python.org/pipermail/python-committers/), несмотря на то, что участие в ней ограничено (только для разработчиков языка).

Я все еще буду с вами, но я хочу дать вам возможность самим решать за себя. Я устал, и мне нужен долгий перерыв.

-- Гвидо ван Россум (python.org/~guido)

>>> Подробности



Проверено: tailgunner ()
Последнее исправление: tailgunner (всего исправлений: 13)

Ответ на: комментарий от tailgunner

Я не оперирую верой, когда располагаю фактами. Он почти всегда балабол и пустозвон, в том числе и в этом треде, но в данном случае в тебе сыграло предубеждение.

Virtuos86 ★★★★★
()
Ответ на: комментарий от tailgunner

Поале пяти звезд можно и не воспламенятся уже.

bread
()
Ответ на: комментарий от Virtuos86

Пистон лучше обсуждайте. А то как бабки на лавочке.

bread
()
Ответ на: комментарий от MyTrooName

Не очень понятно, какой препроцессинг имеется в виду, ну да бог с ним.

что конкретно тебе раскрыть? пример показать?

Просто хотел увидеть интересные примеры окроме типизации.

Кстати, в PEP 3107 неоднократно подчёркивается, что аннотации не ограничены типами

The only way that annotations take on meaning is when they are interpreted by third-party libraries.

However, neither the strings in the first example nor the type information in the second example have any meaning on their own; meaning comes from third-party libraries alone.

Following from point 2, this PEP makes no attempt to introduce any kind of standard semantics, even for the built-in types. This work will be left to third-party libraries.

Так что и твою семантику можно заложить в аннотации.

Crocodoom ★★★★★
()
Ответ на: комментарий от tailgunner

Да нет, просто динамическая типизация почти никогда не нужна.

В скриптах-однострочниках? Совершенно точно, нет.

В долгоживущих проектах, рассчитанных на серьезные изменения в бизнес-логике и серьезный же рефакторинг, вызванный «новыми горизонтами», возможность абстрагироваться от конкретной реализации, оставаясь в рамках обозначенных трейтов/контрактов, — очень даже полезна.

Есть у меня среди коллег джависты, я им иногда помогаю решать некоторые задачи, которые сам же для них и сформулировал. Ну, конечно, когда меня попрограммировать пускают. И я оценил легкость, с которой рефакторится правильно попиленный на запчасти код. Хотя когда они все эти запчасти городили, я, как менеджер, над ними ходил, и канючил: «ну, зачем вам этот ненужный бойлерплейт, давайте по-простому все сделаем»...

AlexM ★★★★★
()
Ответ на: комментарий от AlexM

Да нет, просто динамическая типизация почти никогда не нужна.

В скриптах-однострочниках?

Нигде.

tailgunner ★★★★★
()
Ответ на: комментарий от MyTrooName

То есть старое доброе

x = "ok"
def f():
    print(x)
    if False and (x := "neverok"):
          pass

Взорвёт его классикой UnboundLocalError.

Можно ли := добавлять в eval?

aedeph_ ★★
()
Ответ на: комментарий от bread

аннотации типов в динамическом языке это шизофрения

Называйте как хотите.

В подтверждение моих слов, о высоком спросе, предлагаю взять вам любой проект на питоне, и прогрепать его, и все зависимости, на вызов isinstance.

забавная ситуация, когда хинты разошлись с кодом

Поэтому я и невысокого мнения об этом «разумном компромиссе».

aidaho ★★★★★
()
Ответ на: комментарий от grem

Не окультуреные сказки даже современным взрослым читать нельзя, там чего только нет, раньше народ был суровее. Я жеж про облитературеную версию, а не про народную.

mandala ★★★★★
()
Ответ на: комментарий от Crocodoom

Так что и твою семантику можно заложить в аннотации.

так о том и речь. будь тот проект не на py2, я бы так и сделал

если бы аннотации были только для типов, я бы спокойно воспринимал их как фичу. но вешать mypy на проект по умолчанию, и перекрывать другие возможности - некомильфо имхо. уж лучше по старинке в докстрингах.

MyTrooName ★★★★★
()
Ответ на: комментарий от MyTrooName

но вешать mypy на проект по умолчанию, и перекрывать другие возможности - некомильфо имхо. уж лучше по старинке в докстрингах.

Перекрывать, конечно, плохо. Хочется писать что-нибудь вроде такого (пример выдуманный):

import typing
import units
import contracts

def inverse(x: typing.int, units.Decimeter, contraсts.NotEqual(0)):
    pass

И чтобы эту аннотацию могли по отдельности использовать mypy и гипотетические py-units и py-contracts, и друг другу не мешать.

Crocodoom ★★★★★
()
Ответ на: комментарий от Virtuos86

В вашем стандартном тернарном операторе используются ? и :. В JS эти символы где-нибудь используются ещё в синтаксисе? То есть хрень, которую видишь раз в год.

Да, ? нипанятна. Секретный масонский знак.

bread
()
Ответ на: комментарий от aedeph_

Взорвёт его классикой UnboundLocalError.

:= уважает global и nonlocal

Можно ли := добавлять в eval?

я так понимаю, можно. если в eval globals и locals не заданы, то должен использоваться родительский scope, в соответствии с доками eval.

хотя там длинный список случаев, где := явно запрещен; eval я там не нагрепал, но может он под какой-то другой кейс подпадает.

MyTrooName ★★★★★
()
Последнее исправление: MyTrooName (всего исправлений: 1)
Ответ на: комментарий от mandala

Какое же тогда это будет наставление, если всё хорошо заканчивается?

Хорошо, что Колобка охотники не спасают в конце :)

grem ★★★★★
()
Ответ на: комментарий от AlexM

Я недаром упомянул perl5 в качестве образца.

В перле есть очень продвинутые реализации объектной модели и есть простая искоробочная. В питоне только одна простая, где так же нужно кувыркаться, если хочешь сокрытие данных и другие плюшки. Никаких интерфейсов или миксинов я там не наблюдаю, только тупое множественное наследование и эзотерические метаклассы. Чем это лучше объектной модели жс для меня неочевидно. Проще нахреначить быдлокод с развесистой иерархией? Ну наверно. А надо ли?

bread
()
Ответ на: комментарий от bread

В питоне только одна простая

Как же это я забыл old-style classes. Две, две! И обе это самое.

bread
()
Ответ на: комментарий от Deleted

приведет к форку и уходу в него большей части оригинальных разработчиков

Вот только никто на новый питон не перейдет. Питон 3 считай форк питона 2 — много на него перешли? Быстро? До сих пор сидят на 2.

anonymous
()
Ответ на: комментарий от anonymous

Это совершенно разные вещи. С 2 на 3 не переходят по техническим причинам, например, потому что надо переписывать скрипты под новую версию. А в этом случае питон останется таким же, и переход будет обусловлен не техническими причинами, а организационными.

Deleted
()
Ответ на: комментарий от AlexM

Так что, без бабеля не обойтись...

Мы же о гипотетическом питонозаменителе, там этих проблем не будет. Всё что v8 умеет, то и будет спекой.

bread
()
Ответ на: комментарий от Crocodoom

Не очень понятно, какой препроцессинг имеется в виду, ну да бог с ним.

ну например, заменить в массиве один объект SomeDataStructure с «wlan*» на 3 объекта с wlan0, wlan1 и wlan5 соответственно

MyTrooName ★★★★★
()
Последнее исправление: MyTrooName (всего исправлений: 1)
Ответ на: комментарий от Crocodoom

Так что и твою семантику можно заложить в аннотации.

Вот хоть что-то в питоне грамотно сделали.

bread
()
Ответ на: комментарий от AlexM

Если конечный продукт деятельности оценивается не в количестве статей и выступлений на конференциях - и вообще по факту получения нового знания - а в дополнительной прибыли капиталисту на конкретном проекте, то последние не имеет прямого отношения к науке. Во всяком случае, не больше, чем любая инженерная деятельность. Конечно, работа работе рознь, но если в описании вакансии написано «знания в области жирных данных, машинного обучения, M.Sc.», то где там наука?

Вот, «Master of Science» - ещё одна фальш-вывеска. Задвинул одну-другую публикацию по теме курсача или диплома - и типа уже научных дел мастер? Ха-ха...

seiken ★★★★★
()

ну хоть смерть питона успел отпраздновать в мае, или когда там был большой праздник на пуконе по случаю еол питона? всё равно лучше чем ничего.

anonymous
()

Надо просто скрестить питона с гофером - и все ништяк будет :)

anonymous
()
Ответ на: комментарий от anonymous

приведет к форку и уходу в него большей части оригинальных разработчиков

Вот только никто на новый питон не перейдет. Питон 3 считай форк питона 2 — много на него перешли? Быстро? До сих пор сидят на 2.

Неправильная аналогия. Правильная — OpenOffice vs. LibreOffice. Перешли быстро и многие.

Virtuos86 ★★★★★
()
Ответ на: комментарий от tailgunner

У тебя просто космическое терпение.

anonymous
()
Ответ на: комментарий от darkenshvein

Линус суров и брутален, будет до 150 лет рулить железной рукой. А Гвидо размазня.

entefeed ☆☆☆
()

Чувак с ником JTG на хабре предложил конструкцию `expression as var`, не знаю предлагал ли кто-то это при обсуждении PEP 572, но такая мелочь вроде бы, а насколько лучше могло получиться.

WitcherGeralt ★★
()
Ответ на: комментарий от WitcherGeralt

не знаю предлагал ли кто-то это при обсуждении PEP 572

Я тебе больше скажу, если пойти и пробежаться по PEP глазами, то можно найти обзор альтернатив принятому варианту, и вариант чувака там тоже есть!: https://www.python.org/dev/peps/pep-0572/#id25
Но вы же занятые все :).

Virtuos86 ★★★★★
()
Ответ на: комментарий от Virtuos86

Меня эти нововведения с практической точки зрения не особо интересуют (у меня 2.6 и 2.7), так что не читал, да. Я, скорее всего, полностью пропущу третий питон. Либо похороню питон для себя вместе со вторым, либо, если вдруг случится 4й, в котором всё починят, то метнусь сразу на него.

WitcherGeralt ★★
()

Личше Си и Лиспа языка нет.

jazzman
()
Ответ на: комментарий от cab

Ты хочешь повысить цену входа/поддержки. В опенсорсах внешние пул реквесты частно носят случайный характер. Если для внесения изменений надо читать справочники, человек просто плюнет и пойдет поможет кому-нибудь другому.

В случае проприетарной разработки на подобные вещи конечно можно забить болт, но в общем случае идея так себе.

Vit ★★★★★
()
Ответ на: комментарий от WitcherGeralt

Обсуждаемое нововведение ставит заплатку на одну из родовых травм питона — statement-oriented грамматика.

Хз чо лоровские профессионалы так взъелись на питон, Гвидо и пеп 572. Ещё позавчера они наверняка представления не имели о текущих изменениях в языке.

anonymous
()
Ответ на: комментарий от tailgunner

Тебе нужны аргументы против использования части синтаксиса import для присваивания? Серьезно?

не буду комментировать общий уровень аргумента, скажу лишь, что import - это и есть присваивание

import something as name
name = __import__("something")

реальная проблема с таким вариантом - это with...as; в меньшей степени except...as

MyTrooName ★★★★★
()
Последнее исправление: MyTrooName (всего исправлений: 1)
Ответ на: комментарий от MyTrooName

import - это и есть присваивание

name = __import__(«something»)

Пфф... присваивание - это просто вызов функции:

globals().update({"foo": "bar"})
tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Я не умею, я ламер. Но скучное обсуждение PEP можно было слегка оживить такой темой.

bread
()
Ответ на: комментарий от WitcherGeralt

еще как существенно, с учетом того, что часть [as name] в with опциональна.

простой код вида with f() as x: будет иметь два возможных смысла.

MyTrooName ★★★★★
()
Ответ на: комментарий от tailgunner

Ты опять докапываешься до слов. Аргументация уровня первоклассника. Конечно же, он имел ввиду, что as в случае импорта — присваивание, а не сам импорт.

WitcherGeralt ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.