Guido van Rossum goes on 'permanent vacation' from Python BDFL position
-
Now that PEP 572 is done, I don't ever want to have to fight so hard for a PEP and find that so many people despise my decisions.
I would like to remove myself entirely from the decision process. I'll still be there for a while as an ordinary core dev, and I'll still be available to mentor people -- possibly more available. But I'm basically giving myself a permanent vacation from being BDFL, and you all will be on your own.
…Regarding PEP 572:
The "PEP 572 mess" was the topic of a 2018 Python Language Summit session led by benevolent dictator for life (BDFL) Guido van Rossum. PEP 572 seeks to add assignment expressions (or "inline assignments") to the language, but it has seen a prolonged discussion over multiple huge threads on the python-dev mailing list—even after multiple rounds on python-ideas. Those threads were often contentious and were clearly voluminous to the point where many probably just tuned them out. …
-
@bb36e Well, one less Guido.
-
@bb36e Did he actually call himself "benevolent dictator for life"
-
@blakeyrat Yup.
-
@gribnit What an asshole.
-
@blakeyrat said in Guido van Rossum goes on 'permanent vacation' from Python BDFL position:
What an asshole.
If only he also knew how to write threaded C code correctly…
-
@bb36e well, Python is going to shit now.
-
@bb36e said in Guido van Rossum goes on 'permanent vacation' from Python BDFL position:
PEP 572 seeks to add assignment expressions (or "inline assignments") to the language
-
@polygeekery cant wait for guido to release python 2.8 on his own
-
What a pathetic hill to die on.
-
@polygeekery said in Guido van Rossum goes on 'permanent vacation' from Python BDFL position:
@bb36e well, Python is going to shit now.
That already happened with Python 3 (which to this day, we still don't use...)
-
@cartman82 Such is the state of disagreement in these post-evidentiary days.
-
@blakeyrat said in Guido van Rossum goes on 'permanent vacation' from Python BDFL position:
@bb36e Did he actually call himself "benevolent dictator for life"
The Python community called him that. Not sure if he's the one who came up with the title, but it's been a part of the ethos for a long time. I'm surprised you haven't heard of it.
-
@masonwheeler I thought it was a joke.
-
@mott555 said in Guido van Rossum goes on 'permanent vacation' from Python BDFL position:
That already happened with Python 3 (which to this day, we still don't use...)
You'll be out of security support at the end of next year in that case. Unless you really like to own your support headaches, it's time to convert. It's mostly easy to port over (with the help of
six
) but the goddamn division changes have been nothing but awful for us, as they're significantly more awkward to search for and each needs to be hand audited for what operation it should be doing. That was the only truly bum decision in the whole 2→3 débâcle and it isn't the one that most people grumble about. (By comparison, the changing ofprint
— the thing that most people say was the worst — was quite an irritant and required plenty of work, but it was at least a pretty easy one to find and fix; just grep and fix and grep and fix until there's nothing more to do; then run throughpylint
to find the places you missed.)On the plus side, 3.6 appears to be faster than 2.7… but there's a bunch of confounding factors in other packages that could flip the balance the other way. You won't be switching for the huge performance boost!
-
@blakeyrat said in Guido van Rossum goes on 'permanent vacation' from Python BDFL position:
@masonwheeler I thought it was a joke.
It sort of was. Are you familiar with the term "ha ha but serious"?
-
@dkf You could also
sed
, andgrep
and fix at the same time, if you like living dangerously.
-
@dkf said in Guido van Rossum goes on 'permanent vacation' from Python BDFL position:
division changes
Oh, was 2 -> 3 when they fixed division? I had heard it used to be the the b0rked C-style and they fixed it at some point, but I was under the impression that it happened significantly earlier.
-
@dkf said in Guido van Rossum goes on 'permanent vacation' from Python BDFL position:
You'll be out of security support at the end of next year in that case.
Oh well. These are just internal build scripts.
-
@gribnit You could also
Select-String
andSet-Content
.
-
@gribnit said in Guido van Rossum goes on 'permanent vacation' from Python BDFL position:
@dkf You could also
sed
, andgrep
and fix at the same time, if you like living dangerously.It's not quite as easy as that. There's a bit of extra fiddling you need to do if you use the output-tuple style of prints and need to keep 2.7 compatibility (like we do for now).
-
@dkf Non-trollingly, I suggest further application of
sed
, unless you actually do need to do some sort of light static analysis or similar. Then I would trollingly suggest further application ofsed
.
-
@gribnit In the old days, that could get you arrested for
sed
ition...
-
@masonwheeler said in Guido van Rossum goes on 'permanent vacation' from Python BDFL position:
Oh, was 2 -> 3 when they fixed division? I had heard it used to be the the b0rked C-style and they fixed it at some point, but I was under the impression that it happened significantly earlier.
If by “fixed” you mean “fucked around with and broke a very large amount of code in ways that are awkward to find before runtime, even with tests”? They added
//
earlier, but 2→3 was when they flipped the meaning of/
…
-
@gribnit said in Guido van Rossum goes on 'permanent vacation' from Python BDFL position:
@dkf Non-trollingly, I suggest further application of
sed
, unless you actually do need to do some sort of light static analysis or similar. Then I would trollingly suggest further application ofsed
.Isn't that converting tool at least better than manually writing your own sed script?
-
@dkf said in Guido van Rossum goes on 'permanent vacation' from Python BDFL position:
They added
//
earlierYeah, that's what I was thinking of
but 2→3 was when they flipped the meaning of
/
…flipped how? Apparently there's a part of this story I'm missing.
-
@masonwheeler said in Guido van Rossum goes on 'permanent vacation' from Python BDFL position:
flipped how? Apparently there's a part of this story I'm missing.
It used to be that
6 / 2
gave a result of3
, but now it gives3.0
and breaks any downstream code that demands an integer. Such asstruct.pack
or numpy with integer arrays or indices into lists or …So you've got to work out for each division (we have plenty, probably more than we need, but I'm not disentangling that mess) whether that value produced needs to be an integer or a float, and change the operator used in some of the cases. In short, you have to do semantic analysis on the code to figure it out and that's far more expensive (in brain power) than just grepping for some symbol…
-
@masonwheeler said in Guido van Rossum goes on 'permanent vacation' from Python BDFL position:
flipped how?
6 / 2
used to give a result of 3, but now gives ε
-
@dkf I thought that's what the
//
change did: they made/
give a correct decimal result, even if you were dividing two integers, and introduced//
as the special-purpose integer division operator. If not, then what did the earlier//
change do?
-
@hungrier said in Guido van Rossum goes on 'permanent vacation' from Python BDFL position:
6 / 2 used to give a result of 3, but now gives ε
9 / ϛ nsǝp ʇo ƃᴉʌǝ ɐ ɹǝsnlʇ oɟ Ɛ' qnʇ uoʍ ƃᴉʌǝs 3
-
@masonwheeler said in Guido van Rossum goes on 'permanent vacation' from Python BDFL position:
@dkf I thought that's what the
//
change did: they made/
give a correct decimal result, even if you were dividing two integers, and introduced//
as the special-purpose integer division operator. If not, then what did the earlier//
change do?It paved the way.
//
let you say that you really did mean integer floor division, but you didn't have to say it and many of the indifferent programmers (PhD students, etc.) working on the code at the time didn't. You could argue that they were wrong to do that, and I wouldn't disagree much, but the world is full of wrong and we're the people who sometimes have to clear up the shit.The really annoying titbit though is that there's no corresponding ceil-division. That would've shortened quite a few of our classes…
-
@masonwheeler said in Guido van Rossum goes on 'permanent vacation' from Python BDFL position:
@gribnit In the old days, that could get you arrested for
sed
ition...
-
@cartman82 said in Guido van Rossum goes on 'permanent vacation' from Python BDFL position:
What a pathetic hill to die on.
my guess is that this was probably more the straw that broke the camel's back for Guido after a couple of decades of running the project
-
I think the choice is pretty obvious: abolish
=
, replace it with:=
.=
is one of the biggest mistakes in programming languages.
-
@anonymous234 Do tell us why.
-
@pie_flavor Because if (i = 0) is the standard argument. I would be very surprised if someone came up with anything else to argue for having the assignment be difficult to confuse with the equality operator.
-
@gribnit Well, in a sensible language where variables actually have types, the compiler will error if you try to put a non-boolean in an if statement.
-
@pie_flavor there you go assuming
i
is an integer. Although, with the zero there, it's a reasonable assumption. Unless that's a macro or a fun little function named O.But yeah, people mess up and do assignments when they mean to compare. It happens. Also people still want to be able to assign values to things, like a lot of idiomatic io loops do.
-
@pie_flavor Because 2+2=4 does not mean "I assign the value 4 to 2+2".
-
@gribnit said in Guido van Rossum goes on 'permanent vacation' from Python BDFL position:
@pie_flavor there you go assuming i is an integer
as opposed to?
-
@anonymous234 In things that aren't programming languages, sure.
-
@magus Mmm, in a strictly declarative language with no assignment operator.
-
@gribnit said in Guido van Rossum goes on 'permanent vacation' from Python BDFL position:
But yeah, people mess up and do assignments when they mean to compare. It happens. Also people still want to be able to assign values to things, like a lot of idiomatic io loops do.
They don't mess up in sensible languages with types where if statements don't work with non-booleans, and I don't understand what part of this is constricting value assignment.
-
@anonymous234 said in Guido van Rossum goes on 'permanent vacation' from Python BDFL position:
I think the choice is pretty obvious: abolish =, replace it with :=.
Like in Pascal
-
@timebandit The peace of knowing that you can't accidentally get a wrong sized array passed in?
-
@gribnit the peace of working in a strongly typed language with a clear syntax.
Now I'm working in PHP
File under: === for_real_this_time
-
@magus but is there any value to making programming languages different in this way, besides just people's familiarity with it? To be clear, I don't think the distinction between := and = is terribly important, this is more out of a sense of pedanticryism.
-
@timebandit $$$$condolences.
-
@pie_flavor Generally the same assignment operator would be used for both boolean and non boolean values. Even if it's all overloads and weeerrrltechnically distinct. The issue of flipping assignment and comparison, it persists.
-
@gribnit Or, or, you could use
=
for assignment and==
for comparison.