Python 3.8 Makes me Sad Again
ilya-sher.org
ilya-sher.org
I mean they’re ordered now and that provide some benefit in terms of simpler code in some cases, but it was never a problem as such.
Some people think that, if code ‘out there’ starts depending on that, it’s better to update the documented API to promise what it actually does.
“Somebody” ignored the wisdom of Lisp, which was
“everything is an expression and evaluates to a value”
(no statements vs expressions), and made assignment a
statement in Python years ago.
This was the philosophy of Algol. That is why ":=" was invented there. From Lex Fridman interview I understood that Guido was not educated enough to understand some issues, and tried to fix them afterwards. :-)My first though was "that's the single largest cause of avoidable bugs in my python code".
Maybe when we decide to make Python 4.
/me ducks
The fragmented packaging scene is not a core language problem, but a real source of dismay nonetheless.
I don't get why you would want to force people to not name a parameter.
Like, why is it so bad that I write:
myval = mydict.get(mykey, default=mydefault)
Who does it help that this throws an error?Or is he sad because millions of people around the world use Python instead of his shiny new esolang where he’s managed to get all the things right™?
Hindsight is always 20/20. This kind of snark achieves nothing.
Golang starts iterations in a random position each run to prevent people from relying on the ordering.
https://mail.python.org/pipermail/python-dev/2016-September/...
The primary point of the ordering feature (and insertion ordering) is because Python uses that very same dict implementation for language features such as keyword args {def foo(\\kwargs)}. Changing to hash-order from "source code"-order can be confusing.
1. Why should it use a stable ordering at all?
2. Why should that ordering be the insertion order?
#2 isn't a particularly deep question. It has at least one fairly obvious reason: because it's the most intuitive thing to iterate through items and get them back in the same order as you inserted them. Anything else would be less intuitive.
#1, though, is more interesting, and it's one of those experience-based things that can be hard to see the significance of initially. One reason for it is that determinism & reproducibility is quite useful in a variety of use cases (e.g. testing), and while it's incredibly easy to lose, it's also quite hard (and often brittle) to gain back afterward (in the cases where it's even possible). By contrast, it's generally far easier to inject randomization at any point when you really need to (e.g. for security). Another reason can be that it reduces degrees of freedom in your program, which is generally a good thing as it helps when reasoning about program behavior. (This is not only during development, but also when debugging: it's incredibly useful to see what see what order items were inserted in to arrive at the current state.) There are probably more, but these are what I can think of off the top of my head.
And finally, another overarching reason for both is simply the notion of "information loss" (basically, entropy): it's easy to lose information, but not so easy to get it back. And in some people's experience (including mine), it often pays off in the long run for clients of an API to go out of your way to minimize unnecessary information loss in your library. (That information in this case being the implicit ordering information.)
Of course, all this hinges on the trade-off being worthwhile in each case. That's why library writers try to test different workloads to see if e.g. the performance trade-off is worth it. In CPython's case, it appeared it was.
What an arrogant and pompous thing to say.
That tells everything you need to know, the author thinks of themselves as some sort of intellectual God.
> HTTP status codes 103 EARLY_HINTS, 418 IM_A_TEAPOT and 425 TOO_EARLY are added to http.HTTPStatus. (Contributed by Dong-hee Na in bpo-39509 and Ross Rhodes in bpo-39507.)
I wish more programmers that work outside of the tech industry would contribute to these discussions.
Don't know how you guys get from "From my perspective, all languages suck, while NGS aims to suck less than the rest for the intended use cases" to how NGS is generally good or generally better than other languages or did/would avoid mistakes.
Note "aims to suck less", not even "sucks less".
Thanks, OP
But the API is different! OrderedDict has more methods that have to do with order, and `reverse` works on its `.keys()` and `.values()`. Or did they fix this in 3.8?
But calling the post shit instead of providing any arguments definitely does not make a constructive helpful discussion. Such comments are just noise.
Like this: https://en.m.wikipedia.org/wiki/Shitposting
Thank you for the link though.