[Python-Dev] PEP 572, VF/B, and "Shark Jumping"
Steven D'Aprano
steve at pearwood.info
Thu Jul 5 02:20:06 EDT 2018
On Thu, Jul 05, 2018 at 05:33:50AM +0300, Ivan Pozdeev via Python-Dev wrote:
> And https://mail.python.org/pipermail/python-dev/2018-June/154160.html
> disproves the "chosen often these days in new languages".
Ivan, I think you may have linked to the wrong page. That page was Chris
kindly referring you to my post here:
https://mail.python.org/pipermail/python-ideas/2018-May/050938.html
which refutes Mike's original, biased selection of a handful of
languages. Which he then misrepresented as not including assignment
expressions when half of them actually do, at least in a limited form.
(3 out of the 5 of Mike's examples include *at least* some limited
assignment expression. My survey found 13 out of 18 modern languages
have at least some form of assignment expression. See link above for
details.)
It simply isn't true that modern languages are moving away from
assignment expressions. Some are. Some aren't. Even those that don't
support assignment expressions in general usually support special syntax
to allow it in a few contexts.
But even if we pretended that, let's say, Go for example has no
assignment expressions (it actually does, but limited only to the
special case of if statements), what conclusion should we draw?
That Rob Pike is ever so much a better language designer than Guido?
Maybe he is, maybe he isn't, but Go is just eight years old. Python is
27. When Python was 8, it lacked a lot of features we find indispensible
now:
https://www.python.org/download/releases/1.5/whatsnew/
Who is to say that when Go is 27, or even 10, it won't have added
assignment expressions?
Some of Go's choices seem a bit... idiosyncratic. Strings are still
ASCII byte-strings. Unicode text is relegated to a seperate type,
"runes", the naming of which is a tad patronising and contemptuous of
non-ASCII users. There are no exceptions or try...finally. The designers
bowed to public pressure and added a sort of poor-man's exception system,
panic/recover, but for most purposes, they still requiring the "check a
flag to test success" anti-pattern. The designers are actively opposed
to assertions.
I dare say a lot of Python's choices seem strange to Go programmers too.
Rather than saying "Go got it right", maybe we should be saying "Go got
it wrong".
> >We can also reuse the existing "EXPR as NAME" syntax that already
> >exists and is widely enjoyed.
> >
>
> For the record, with "as", Victor Stinner's examples from the 5 Jul 2018
> 00:51:37 +0200 letter would look like:
Enough with the "as" syntax. This discussion has been going on since
FEBRUARY, and "as" was eliminated as ambiguous months ago. Stop beating
that dead horse.
--
Steve
More information about the Python-Dev
mailing list