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)
Ответ на: комментарий от kto_tama

И в полнота раза менее читабельно, хотя очень удобно, абсолютно согласен.

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

А то запарили недоязыки, где присваивание делается знаком сравнения, а потом выгребаем всякое

Когда пишешь иф со сравнением уже на уровне рефлекса должен обращать внимание на =, если кто-то такого рефлекса не приобрел то это его проблемы, и говнякать язык лишними конструкциями ради этого не стоит.

entefeed ☆☆☆
()

var := some_expression

но зачем ? Неужели туда таки пробрались сишные утята которым нравится чувствовать себя суперважными, только потому что синтаксис излишне запутан. Спасибо, теперь можно сэкономить 2 строки кода и тратить больше времени при чтении кода.

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

Претензия в сторону Гвидо состоит в том, что он сделал что-то против изначальных постулатов (типа «всегда должен быть один способ чё-то сделать и только один»)?

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

Вот, собственно, из-за большого количества таких тонких различий, размазанных по всему языку, я перестал использовать python

Щас набегут фанатики и объяснят тебе за то, что питон очень простой и продуманный язык, которому нет альтернатив. Правда спустя 27 лет пришлось запилить ещё одно присваивание, но это так было задумано.

no-such-file ★★★★★
()
Ответ на: комментарий от RazrFalcon

Луа и нода точно ничем не хуже. Я уже понял, что ты ведёшься на сахарок, и тут понятно почему тебе не нравится луа, но чем по-твоему актуальный питон лучше ноды?

WitcherGeralt ★★
()
Последнее исправление: WitcherGeralt (всего исправлений: 1)
Ответ на: комментарий от silver-bullet-bfg

За то, что Гвидо больше не двигает ЭТО, за то, что пистон либо станет нормальным языком (в чем большие сомнения), либо - сдохнет (что будет очень радостным событием)

Надежда на исправление питона очень слабая. Слишком много всего наворотили, теперь уже не разгрести. ИМХО Гвидо понял куда всё это катится и слился сдался.

no-such-file ★★★★★
()
Ответ на: комментарий от seiken

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

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

* Метагеномный анализ — это когда проводится анализ генома не отдельной клетки/колонии/организма, а *всех* организмов, забранных в определенном месте. Как это описывает моя жена, относящаяся к методу довольно скептически, «рубим собаку вместе с будкой и костьми, которые она в эту будку натащила, анализируем полученные сиквенсы, и на основании этого делаем выводы о состоянии микробиоте во дворе, где жила в будке собака». Но, тем не менее, у нее тоже есть публикации с использованием данного метода :)

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

Луа

Её использует 2.5 дровосека. Это очень плохо для экосистемы. Будут проблемы с батарейками.

нода

JS - убожество.

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

было бы правильней :=.

ну вот почему оно было бы правильней ? Это ведь условность, при чем условность вида использования k,q,i,j в качестве итераторов (по этому поводу у меня отдельно горит, каждый преподаван считает своим долгом сказать что в циклах надо использовать это, но вот если бы хоть кто-нибудь включил голову и понял насколько проблемно в итоге читать код каждый раз мысленно разделяя i и j, а если кто-то решит еще расписать на бумаге, то прямо уух.). И я понимаю что все оно из математики, только это не значит, что это хорошая идея.

with офигительно ближе

по моему одна из самых удачных конструкций python, серьезно, работает куда очевиднее какого-нибудь finally из java. И позволяет не оборачивать лишний раз ошибки

_foo(), __foo(), __foo__()

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

Списковые вкючения кстати тоже отличная штука, сразу же понятно что внутри цикл и что он генерирует, куда удобнее map и filter, которые как раз надо было отправить туда же куда и reduce

Если уже докапываться до современного python, то из-за убогих тернарных операторов и лямбд

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

А я так и не понял, это он утвердил или наоборот отказался с этой фигней работать. ЕМНИП раньше он намеренно не стал такое вносить и оно сильно противоречит Zen of Python. В целом мне все равно кто это притащил, но отсутсвие таких штук одна из причин почему мне понравился python когда-то

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

оно сильно противоречит Zen of Python

В питоне всё противоречит Zen of Python. Начиная с отсутствия явных ограничителей блока кода и заканчивая постоянным запиливанием уродских фич для специальных случаев.

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

Ты это по старой памяти говоришь или по актуальному опыту?

По старой памяти. Сейчас у меня java, swift и emacs lisp вместо python. Еще kotlin планирую.

(with — мастхев) ... list/dict comprehensions

Заменяется try/catch. Кода на копейку больше, зато читабельность выше, чем у нагруженого смыслом однострочника.

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

Альтернативная реальность болезных - это там, где утилиты пишут на Яве и собирают Maven.

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

Её использует 2.5 дровосека

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

JS - убожество

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

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

list comprehensions существуют в Пайтоне начиная с версии 2.1

Значительно позже.

Разве могут быть множественные вложенные try/finally лучше одного with?

лично у меня боль от чтения нагруженых смыслом однострочников. Особенно не моих. Лично мне лучше структурированный try/finally

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

Разве type hints уже работают? Последний раз когда я тыкал mypy - он в трёх строках запутался. Что говорить про что-то сложнее.

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

Разве type hints уже работают?

Да.

Последний раз когда я тыкал mypy - он в трёх строках запутался.

Они могут работать плохо по твоим меркам, но они полезны уже сейчас.

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

А есть разжевано, для тех, кто не в теме - из-за чего конкретно у чувака пригорело?

То же сильно интересно почему у чувака пукан разарвало?

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

Правда спустя 27 лет пришлось запилить ещё одно присваивание

Самый прикол в том, что его можно и не запиливать, а вывести из контекста.

Ну и читабельность, о которой так много кричат питонщики, на поверку оказалась неважной.

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

Самый прикол в том, что его можно и не запиливать, а вывести из контекста.

Ну да, ну да. Выведи из контекста, что значит a=1 в f(a=1)

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

Если уже докапываться до современного python, то из-за убогих тернарных операторов и лямбд

А как хорошо начал-то…

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

Руки не нужны? Совсем с ума сошли?)

Он ногами всех от... кхм.

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

ну вот почему оно было бы правильней ? Это ведь условность

Я выше согласился, что условность. А правильней потому, что у меня 8 лет математики за плечами и долго = воспринимался именно как ==. Потом привык.

работает куда очевиднее какого-нибудь finally из java

Как на мой вкус - нет. Особенно учитывая отступы.

Просто надо либо трусы надеть, либо крестик снять: либо мы сосредотачиваемся на удобстве кодирования, либо чтения. Кодировать со всем вышеперечисленным удобней, я не спорю. Читать уже нет.

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

умеешь ли ты его готовить

Мне не нужен язык, который нужно готовить.

Нода как минимум быстрее

Мне не важна производительность скриптов. Для этого я использую нормальные языки.

асинхрон

И зачем оно в скриптоте?

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

Вообще-то в 2.0

Значит я что-то напутал либо попал на описание значительно позже.

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

list comprehensions существуют в Пайтоне начиная с версии 2.1

Значительно позже.

https://docs.python.org/release/2.1/tut/node7.html#SECTION007140000000000000000

Разве могут быть множественные вложенные try/finally лучше одного with?

лично у меня боль от чтения нагруженых смыслом однострочников. Особенно не моих. Лично мне лучше структурированный try/finally

А определения функций, классов тебе не больно читать? А они ведь примерно одинаковы с with: <keyword> <identifier> … <:> И дальше индент определяет блок кода. Какая здесь боль??

И да, у тебя оригинальное понимание понятия «однострочник».

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

работают

Да.
могут работать плохо по твоим меркам

Это как?

Я не говорю что оно не работает в принципе, но до уровня стат. типизации ему ещё очень далеко. Поэтому и толку от него нет.

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

могут работать плохо по твоим меркам

Это как?

RazrFalcon> в трёх строках запутался.

до уровня стат. типизации ему ещё очень далеко. Поэтому и толку от него нет.

Это заявление неявно подразумевает, что аннотации типов полезны только тогда, когда обеспечивают «уровень стат. типизации». Эта посылка очевидно неверна.

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

А определения функций, классов тебе не больно читать? А они ведь примерно одинаковы

Как правило, они начинаются с позиции 0 либо 4. С позиции 8 значительно реже. Больше выделяются среди основного кода. И семантически менее нагружены, чем with. Потому не напрягают

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

Кстати я не совсем понял а сам Гвидо был за := или против ?

по-видимому, «за».

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

Самый прикол в том, что его можно и не запиливать, а вывести из контекста.

Ну да, ну да. Выведи из контекста, что значит a=1 в f(a=1)

Что параметру а передается 1. Нет?

И как ты это «вывел из контекста»? Если у f нет **kwargs, то это присваивание значения переменной a.

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

А если надо f(a:=1)

Если я правильно понял совместимость не нарушится, если будем считать по-новому. Или ошибся?

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

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

Ну и хорошо. JS хоть и недоязычок, но намного лучше пытона. Но есть одна засада: стандартная либа, которой у жс нет. То, что предлагается ставить через npm — треш, угар и садомазо. Это пока главный и решающий недостаток жабаскрипта.

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

Докстринги (с типами или без?) нужны, а аннотации типов - нет. Ну окей, довольно забавное мнение

я это мнение тоже поддерживаю.

аннотаций мне в python2 не хватало для метапрограммирования, но это редкий use case

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

Заменяется try/catch

Не заменяется, контекстный менеджер — это гораздо больше чем прото try-finally. Заменив один контекстный менеджер на другой, ты можешь что-то добавить, убавить, полностью поменять поведение какого-то куска кода не изменяя его, и, что особенно важно, код становится гораздо компактней и чище. Ты, видимо, просто не умеешь в абстракцию.

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

Сделают какой-нибудь nodebundle с базовыми батарейками вроде питоновского набора.

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

Докстринги (с типами или без?) нужны, а аннотации типов - нет. Ну окей, довольно забавное мнение

я это мнение тоже поддерживаю.

И это тоже забавно.

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

документация - нужна. типы в документации - нужны. засорять объявление метода второстепенной для duck-typing языка информацией - не нужно. имён параметров вполне достаточно.

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

стандартная либа, которой у жс нет

Built-in Objects из спеки выпилили уже?

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

А как хорошо начал-то

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

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