6 ms·
Well, when he is dealing with arguments as silly as "but we will confuse = with ==) it's not a surprise he is tired and had enough. I just wish he had pushed th
by bluecalm 8y ago
Well, when he is dealing with arguments as silly as "but we will confuse = with ==) it's not a surprise he is tired and had enough. I just wish he had pushed through C style assignment before retiring. New syntax is ugly and introduces a new operator which basically does the same thing. When I've seen this PEP for the first time I thought he lost his touch after so many fantastic design decisions throughout the years. Now I realize he just had enough.
Thanks Guido for fantastic language. I wouldn't find love for programming if it wasn't for you.
- Tehnix 8y ago> Well, when he is dealing with arguments as silly as "but we will confuse = with ==)... You clearly never had exposure to a PHP codebase. If people can trip up, people will trip up.
- joshuamorton 8y agoGuido (along with most core devs) are actively against c-style assignment. This pep was a compromise that Guido felt was good. But c-style assignment in Python was never going to happen, not should it have.
- sevensor 8y agoMy reaction was the opposite -- I didn't know about PEP572, read it immediately after this retirement announcement. My response was, "where has this feature been all these years?" I'm delighted by the addition -- it removes a lot of "loop and a half" ugliness without adding do loops, it simplifies list comprehensions, it lets you remove opportunities to make mistakes, and it doesn't let you put a single-equals assignment inside a conditional as a typo.
- sneakermoney 8y agoSame here, I often find myself writing a loop-and-a-half and will on occasion repeat expressions to get around extra lines (if I cared about performance, I wouldn't be writing it in Python). I feel like a lot of the resistance is from people who think this is somehow bad style, because it's associated with a source of bugs in other languages. The same kind of people will argue endlessly against having 'goto' in a language, even when it can clearly make for cleaner code (eat it, Dijkstra!) in some cases.
- bogomipz 8y agoCan you explain what a "loop-and-a-half" is in Python?
- blake_himself 8y agox = stuff while x: x = stuff
- Delgan 8y agoOn the contrary, loop-and-a-half is intended to avoid repeating stuff outside and inside of the loop body. while true: x = stuff if not x: break
- chucksmash 8y agoGPs example is perfectly valid as well - this is just a restatement of the same logic in a way that keeps the logic contained within the loop at the cost of using a conditional plus a break inside of an unconditional loop. See [0]: Another motivating code pattern is the "loop and a half". It was once common for processing a file by line, but that has been solved by making file objects iterable; however other non-iterable interfaces still suffer from patterns like: line = f.readline() while line: ... # process line line = f.readline() or like this: while True: line = f.readline() if not line: break ... # process line Either of those could be replaced with a much more clear and concise version using an assignment expression: while line := f.readline(): ... # process line [0]: https://lwn.net/Articles/757713/ https://lwn.net/Articles/757713/
- sevensor 8y agoI think EWD was basically in the right to push hard for structured programming, but I also like Knuth's nuanced take: https://pic.plover.com/knuth-GOTO.pdf https://pic.plover.com/knuth-GOTO.pdf