On Sat, Sep 29, 2018 at 10:15:42PM +1000, Chris Angelico wrote: [...] > As are all the things that are "undefined behaviour" in C, like the > result of integer overflow in a signed variable. They are "Here be > dragons" territory, but somehow that's not okay for you. I don't > understand why you can hate on C for having behaviours where you're > told "don't do that, we can't promise anything", but it's perfectly > acceptable for Python to have the exact same thing.
They're not the same thing, not even close to the same thing. Undefined behaviour in C is a radically different concept to the *implementation-defined behaviour* you describe in Python and most (all?) other languages. I don't know how to communicate that message any better than the pages I linked to before. > AIUI, the only difference is that C compilers are more aggressive > about assuming you won't invoke undefined behaviour, whereas there are > no known Python interpreters that make such expectations. I don't know any other language which has the same concept of undefined behaviour as C, neither before nor after. What does that tell you? If C undefined behaviour is such a good idea, why don't more languages do the same thing? Undefined behaviour allows C compilers to generate really fast code, even if the code does something completely and radically different from what the source code says. Consequently, undefined behaviour in C is a HUGE source of bugs, including critical security bugs, and the C language is full of landmines for the unwary and inexpert, code which looks correct but could do *absolutely anything at all*. The C language philosophy is to give up correctness in favour of speed. I hate that idea. If there was a Zen of C, it would say "Errors should not just be silent, they're an opportunity to win benchmark competitions." -- Steve _______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/