Guido van Rossum goes on 'permanent vacation' from Python BDFL position
-
@pie_flavor Sure, and I only like to use languages that do that.
-
@bb36e said in Guido van Rossum goes on 'permanent vacation' from Python BDFL position:
but is there any value to making programming languages different in this way
I'm gonna stop you right here. No effort needs to be taken to make them different in this way. They already are. Changing that is what you need to prove the value of.
-
@dkf said in Guido van Rossum goes on 'permanent vacation' from Python BDFL position:
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.If a programming language has something that lets people write code, and they fix the language, people complain that it broke backwards compatibility (e.g. this thread).
If a programming language has something that lets people write code, and they don't fix the language, people complain that the language allows code (e.g. many things in PHP).
-
@magus said in Guido van Rossum goes on 'permanent vacation' from Python BDFL position:
Changing that is what you need to prove the value of.
It's more consistent the other way, and therefore easier to learn.
Now how long do you think programming languages will exist for? Will they be gone in 200 years? Probably not.
Does the slight inconvenience of every single learner having to learn that = means two different things for the next 200 years outweight the slight inconvenience of every programmer today having to type a different symbol? Yes, it does.
-
@dragnslcr said in Guido van Rossum goes on 'permanent vacation' from Python BDFL position:
people complain that it broke backwards compatibility (e.g. this thread).
See, here's the thing. Breaking backwards compatibility is inevitable, but we don't handle it gracefully.
Python 3 was a failure because of one enormous problem: lack of interoperability between the two versions.
You can't ask people to migrate everything they have at once. First you add transparent compatibility with the new format, then you start writing new stuff in the new format, then on your spare time (or when it's necessary) you migrate old stuff to the new format.
-
@dkf hold on, why the didn't you just do a swap of say "/"-> "kdkdkddkdkdkdk"
Then all " //" -> "kfkdlzlsæspæpepepepepe"
Then kdkdkddkdkdkdk -> "//"
Then kfkdlzlsæspæpepepepepe -> "/"Now you've swapped the values, with next to no work.
-
@anonymous234 said in Guido van Rossum goes on 'permanent vacation' from Python BDFL position:
Python 3 was a failure because of one enormous problem: lack of interoperability between the two versions.
+1 see angular, angularjs. There are probably several more Google languages where backwards comparability was thrown out
-
@swayde said in Guido van Rossum goes on 'permanent vacation' from Python BDFL position:
@dkf hold on, why the didn't you just do a [syntactic] swap[…]
Now you've swapped the values, with next to no work.Because I had to look at each fucking divide individually to work out if I needed to convert it or not. In our codebase, it was about a 50/50 split too (as we do plenty of calculations with floats). It's not like it was automatic or anything; both
/
and//
work perfectly well with both integers and floats, but the operations around them (which might be in other files — that caught me out a couple of times) sometimes really care. I think the worst case was where the code did something radically different (and pretty bizarre in context) because some smartass decided that doing peeking on the types was a great idea and would pick totally different execution paths based on what it detected.Not my circus, not my monkeys, but the simian excrement still needed to be cleaned up.
-
@anonymous234 said in Guido van Rossum goes on 'permanent vacation' from Python BDFL position:
Python 3 was a failure because of one enormous problem: lack of interoperability between the two versions.
But it is possible to have that interop. If you write your code to do so, and use the right support packages. We've done this, and our code now runs fine on 2.7 and 3.6 (and maybe 3.4, 3.5 and 3.7; we've not checked them as heavily). It's simply a massive PITA as a developer to do the migration; you don't have to inflict that pain on users simultaneously, thank god…
-
@dkf I didn't start learning Python until after 3 was already in wide use, so I didn't bother with 2. I've never even looked at 2, except one script that had to run on some workstations that didn't have 3 installed. My 3 code worked perfectly without any special effort — except for the lack of Unicode support; I had to draw graphs on the console using ASCII characters instead of extended graphic characters if the version number was 2.x.
OTOH, the fact that our v3 installations were stuck at 3.3 was a PITA. No enum support.
-
@hardwaregeek said in Guido van Rossum goes on 'permanent vacation' from Python BDFL position:
I didn't start learning Python until after 3 was already in wide use, so I didn't bother with 2.
We have a dependency which took a long time to be ported AIUI; I think we couldn't port until 3.4 and by that point it was painful.
OTOH, the fact that our v3 installations were stuck at 3.3 was a PITA. No enum support.
Python's enums are weird. They're even weirder than Java's enums…
-
My only complaint about this new PEP is that
:=
should have become the default assignment operator in 4.0, with=
being deprecated, but instead they made it an error to use:=
in statement position.valid = True invalid := True (valid := True)
Python was my first programing language, and I loved it - still enjoy it, though I don't write it much anymore.
RE: Guido and BDFL ... he was a pretty good BD, even if the FL part didn't pan out. Yes, it sucks for parallelism, but the end-user design is beaten only by LISP (IMO).
-
@dkf said in Guido van Rossum goes on 'permanent vacation' from Python BDFL position:
Python's enums are weird. They're even weirder than Java's enums
What exactly is weird about either? (I confess I much prefer Python / Java's enum style to Scala's ... though I'll also take a sensible tagged integer a la C#).
-
@svieira Scala even has enums? Closest I found last time I looked for an enum there was some bastard hack.
-
@svieira said in Guido van Rossum goes on 'permanent vacation' from Python BDFL position:
the end-user design is beaten only by LISP
The surface is nice. There are stygian horrors in the implementation.
-
@gribnit said in Guido van Rossum goes on 'permanent vacation' from Python BDFL position:
Closest I found last time I looked for an enum ...
Yep - worst enum implementation in any language I have ever come across.
-
@dkf said in Guido van Rossum goes on 'permanent vacation' from Python BDFL position:
Python's enums are weird. They're even weirder than Java's enums…
Why're Java's enums weird?
-
@pie_flavor Because they're quite powerful and work well.
-
@svieira said in Guido van Rossum goes on 'permanent vacation' from Python BDFL position:
@dkf said in Guido van Rossum goes on 'permanent vacation' from Python BDFL position:
Python's enums are weird. They're even weirder than Java's enums
What exactly is weird about either? (I confess I much prefer Python / Java's enum style to Scala's ... though I'll also take a sensible tagged integer a la C#).
The one true enum style is Rust's (tagged union).
-
@svieira Welcome back!
-
https://news.ycombinator.com/item?id=17515492
The comments section has both the "OSS devs don't owe shit to the users" camp and the other one.
On an unrelated note, most people on Hacker News look like they'd be a pain in the ass at parties.
EDIT: People being bitter to each other on the PHP mailing list. Fun read.
https://bugs.php.net/bug.php?id=50696
-
@dragnslcr said in Guido van Rossum goes on 'permanent vacation' from Python BDFL position:
@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
Would be nice for the REPL:
>>> variable_with_a_long_descriptive_name = "result of some complicated expression" >>>
See how it didn't print the value of the expression? Then I'd have to type the variable name again:
>>> variable_with_a_long_descriptive_name = "result of some complicated expression" >>> variable_with_a_long_descriptive_name 'result of some complicated expression' >>>
And that's work.
I mean, sure, I could just type
_
, which is the result of the last evaluation, but that's work too
-
This post is deleted!
-
@pie_flavor said in Guido van Rossum goes on 'permanent vacation' from Python BDFL position:
@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.
boolean a = true; boolean b = false; if (a = b) say("you're right"); else say("you're wrong");
-
@masonwheeler
from __future__ import non_retarded_division
-
@mott555 said in Guido van Rossum goes on 'permanent vacation' from Python BDFL position:
@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.
How complicated can they possibly be that you can't convert them to Python 3?
-
@sockpuppet7 said in Guido van Rossum goes on 'permanent vacation' from Python BDFL position:
@pie_flavor said in Guido van Rossum goes on 'permanent vacation' from Python BDFL position:
@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.
boolean a = true; boolean b = false; if (a = b) say("you're right"); else say("you're wrong");
And the output is, as expected, "you're wrong".
-
@topspin said in Guido van Rossum goes on 'permanent vacation' from Python BDFL position:
@mott555 said in Guido van Rossum goes on 'permanent vacation' from Python BDFL position:
@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.
How complicated can they possibly be that you can't convert them to Python 3?
The bigger issue is that they are stable and they work and nothing needs to change. I suppose I could convert them out of boredom some day, but that does nothing to make things better around here except by arbitrarily incrementing a version number on something.
-
@stillwater said in Guido van Rossum goes on 'permanent vacation' from Python BDFL position:
EDIT: People being bitter to each other on the PHP mailing list. Fun read.
https://bugs.php.net/bug.php?id=50696Directed at rasmus@php.net:
Please escalate this to someone
-
@stillwater said in Guido van Rossum goes on 'permanent vacation' from Python BDFL position:
EDIT: People being bitter to each other on the PHP mailing list. Fun read.
https://bugs.php.net/bug.php?id=50696this is tax data and has to be precise for tax planning and retirement planning.
Taxes? Done in PHP?
-
@anonymous234 said in Guido van Rossum goes on 'permanent vacation' from Python BDFL position:
@dragnslcr said in Guido van Rossum goes on 'permanent vacation' from Python BDFL position:
people complain that it broke backwards compatibility (e.g. this thread).
See, here's the thing. Breaking backwards compatibility is inevitable, but we don't handle it gracefully.
Python 3 was a failure because of one enormous problem: lack of interoperability between the two versions.
You can't ask people to migrate everything they have at once. First you add transparent compatibility with the new format, then you start writing new stuff in the new format, then on your spare time (or when it's necessary) you migrate old stuff to the new format.
When moving between major versions, you should expect code changes. That's why, if you're following a sane versioning scheme, you'd use a major rev in this situation.
You could also argue they should have introduced some/most/all of 3's features as optionally allowed things in the 2.x line. That way people could transition without having to fully commit.
After a major rev, I wouldn't never expect flawless running of something made for that last major rev.
-
@mikehurley said in Guido van Rossum goes on 'permanent vacation' from Python BDFL position:
After a major rev, I wouldn't never expect flawless running of something made for that last major rev.
You would at least sometimes expect flawless running of something made for that last major rev?
-
@dreikin said in Guido van Rossum goes on 'permanent vacation' from Python BDFL position:
Taxes? Done in PHP?
That's what I thought.
-
@masonwheeler said in Guido van Rossum goes on 'permanent vacation' from Python BDFL position:
@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.
I did not realize Guido was the first to use it, according to Wikipedia. Patrick Volkerding, the inventor of Slackware, is also a holder of that title, and has been for some time.
-
@swayde said in Guido van Rossum goes on 'permanent vacation' from Python BDFL position:
@anonymous234 said in Guido van Rossum goes on 'permanent vacation' from Python BDFL position:
Python 3 was a failure because of one enormous problem: lack of interoperability between the two versions.
+1 see angular, angularjs. There are probably several more Google languages where backwards comparability was thrown out
This is why I'm wary of Google. I just finished a job where I had to maintain GWT. (Brrr.)
-
@stillwater said in Guido van Rossum goes on 'permanent vacation' from Python BDFL position:
On an unrelated note, most people on Hacker News look like they'd be a pain in the ass at parties.
Unlike, say, the sweet folks here.
-
@dreikin said in Guido van Rossum goes on 'permanent vacation' from Python BDFL position:
@mikehurley said in Guido van Rossum goes on 'permanent vacation' from Python BDFL position:
After a major rev, I wouldn't never expect flawless running of something made for that last major rev.
You would at least sometimes expect flawless running of something made for that last major rev?
No. I would expect to have to make at least one code change after a major rev. Always. I would hope I don't need to say rewrite half of my app, but I would plan on the transition to be non-trivial for a non-trivial app. That's what a major rev means. If it was that compatible, the major version probably shouldn't change. If I don't have to do that much work that's a bonus, not an expectation.
-
@mikehurley said in Guido van Rossum goes on 'permanent vacation' from Python BDFL position:
@dreikin said in Guido van Rossum goes on 'permanent vacation' from Python BDFL position:
@mikehurley said in Guido van Rossum goes on 'permanent vacation' from Python BDFL position:
After a major rev, I wouldn't never expect flawless running of something made for that last major rev.
You would at least sometimes expect flawless running of something made for that last major rev?
No. I would expect to have to make at least one code change after a major rev. Always. I would hope I don't need to say rewrite half of my app, but I would plan on the transition to be non-trivial for a non-trivial app. That's what a major rev means. If it was that compatible, the major version probably shouldn't change. If I don't have to do that much work that's a bonus, not an expectation.
I think you missed the ry involved in my response.
-
@tharpa said in Guido van Rossum goes on 'permanent vacation' from Python BDFL position:
Unlike, say, the sweet folks here.
Don't tar everyone with the same brush. I'm the life of the party...
...for about 1 hour, tops. Then I get exhausted from too much intense social interaction. (There are certain traits that are stereotypically associated with introverts, and some that are associated with extroverts. I kindasorta have both.)
-
@pie_flavor said in Guido van Rossum goes on 'permanent vacation' from Python BDFL position:
Why're Java's enums weird?
Because they're full objects. You can't make new instances of them at runtime, and you can't arbitrarily control what they inherit from, but they're still pretty weird. Useful though (and with good syntactic support) since you can do things like giving them fields and methods, and that is very nice since it means that your enums can tell you useful associated facts about themselves instead of needing to make a lookup table elsewhere.
-
@mott555 said in Guido van Rossum goes on 'permanent vacation' from Python BDFL position:
The bigger issue is that they are stable and they work and nothing needs to change.
Except that they depend on a version of Python that's going out of support totally in a little under 18 months; expect things to get much harder for you from there on out. Fortunately, for most simple things like build scripts the migration is just a matter of changing the
print
statements to put parentheses around the arguments. The second biggest change is in the iterators and so on; again, an easy correction to make (and one that pylint will spot for you).