Python Language Founder Steps Down (zdnet.com)
After almost 30 years of overseeing the development of the world's most popular language, Python, its founder and "Benevolent Dictator For Life" (BDFL), Guido van Rossum, has decided to remove himself entirely from the decision process. From a report: Van Rossum isn't leaving Python entirely. He said, "I'll still be there for a while as an ordinary core dev, and I'll still be available to mentor people -- possibly more available." It's clear from van Rossum's note he's sick and tired of running the organization. He wrote, "I don't ever want to have to fight so hard for a PEP (Python Enhancement Proposals) [PEP 572 Assignment Expressions] and find that so many people despise my decisions." In addition, van Rossum hints he's not been well. "I'm not getting younger... (I'll spare you the list of medical issues.)" So, "I'm basically giving myself a permanent vacation from being BDFL, and you all will be on your own." From the email: I am not going to appoint a successor. So what are you all going to do? Create a democracy? Anarchy? A dictatorship? A federation? I'm not worried about the day to day decisions in the issue tracker or on GitHub. Very rarely I get asked for an opinion, and usually it's not actually important. So this can just be dealt with as it has always been. At Slashdot, we had the privilege of interviewing Guido van Rossum, a Computer History Museum honoree, in 2013.
Comment removed based on user account deletion
I'm not sure why you're being modded down, I'm curious about this myself. Despise is a word, it's the proper spelling, it's not used incorrectly, it's in a grammatically correct position... so wtf [sic]?
"Guido van Rossum, has decided he would like to remove myself entirely from the decision process"
Definitely sounds like a dictator! Or a poor editor! Or both!
This Space Intentionally Left Blank
Please download and start using my new Python known as "Trouser Snake". It's exactly the same except
1 without all the obstinate gray beards on the board.
2 revision numbers will count down rather than up
I'm 60, and yeah, health things creep up on you. We'll lose the first generation of Free Software / Open Source folks soon.
Bruce Perens.
Meanwhile in Perl land, the founders have tried to step down multiple times, but nobody could read their resignation letters.
How is the Riemann zeta function like Trump rallies? Both have an endless number of trivial zeros.
Thank you for the wonderful language. Someone who devotes such significant portions of his life to the greater good deserves respect. I also hope he has long years and a healthy life to live ahead of him and can watch his baby grown and mature even further. Python is a beautiful language, IT would be poorer without it.
We suffer more in our imagination than in reality. - Seneca
He steps down.
If I recall my childhood correctly, he could have just slid down a python instead.
"That's the way to do it" - Punch
SJW takeover in 3....2.......
Stepping down is no good, to truly be out of the loop you have to un-indent.
Nullius in verba
It must have been something you assimilated. . . .
TrouserSnake Improovmet Proposal #0001: Because of the confusion caused by the inconsistent use and display rendering of White space Tabs versus spaces, the proposed change is to use backspaces to denote block clauses. A further extension of this proposal is to center justify all lines of text. This will end the discrimination of the left justification hegemony that disenfranchises cultures the practice Left justification. Center justification is fair and "just".
Some drink at the fountain of knowledge. Others just gargle.
I've taken over Python from Guido. My first edict will be to require that only tabs be used for whitespace. This will save valuable disk space. No complaints allowed. I am also assigning APK as my vice-dictator.
Are there any computer languages that are well-designed and well-documented?
"Well-designed" is purely a matter of opinion, and I'd say there are many that are well-documented. To be fair, there's a distinction between language documentation and standard library documentation, and sometimes library documentation can be a bit lacking -- but there are still many that are excellent.
Why was there enthusiasm for Python? It seems to me that now there is less enthusiasm for Python. Is that correct?
Python is the second most popular language on GitHub and its popularity has been climbing yearly. There are many reasons why there's enthusiasm for it, and they're mostly personal opinions, but many people would tell you the reasons they like Python are the speed of development, intuitive language syntax, a comprehensive standard library, and massive numbers of open source libraries.
Why do programmers adopt new languages so enthusiastically? Is that an interesting hobby?
Yes, actually, designing and learning new languages is fun for many people.
Karma: Terrifying (mostly affected by atrocities you've committed)
I suggest that "Bolding", "italic", and blinking font should be used to distinguish static, class, and method functions.
ALL CAPS can be used for INTERFACES and VIRTUAL CLASSES.
Python is incredibly popular due mainly to flexibility and ease of use. It's taught in schools so I imagine it will only keep growing although Guido leaving is a bit of a blow.
"sic" means mis-spelling or incorrect grammar reprinted as originally transcribed.
Vintage computer adverts: http://www.vintageadbrowser.com/computers-and-software-ads
This is great! I thought being a founder of something was an indelible historical event, but apparently, you can step down from being a founder! I'm going to go found some evil groups right away...once I step down, I won't be a founder any more, so I will be absolved forever. Awesome!
Cloudiot: A person who does not see offsite storage as a way to lose control over access to his or her own data.
"sic" isn't used in the summary, so I assume you are referring to the use in the actual article, https://www.zdnet.com/article/...
the quote is: "I don't ever want to have to fight so hard for a PEP ... and find that so many people despise (sic) my decisions."
The word "despise" seems to be correctly spelled, so it's not clear why it should marked sic. Technically, that's just Latin meaning "thus," (implying correct as written verbatim from the original)-- but since it is correct, there's no particular reason to point that out-- it's not a misspelling.
So, I don't know why the "sic" either.
http://www.geoffreylandis.com
The IT world would be poorer without all his work. Time for a well deserved vacation.
"I'm too busy to research this and form an educated opinion, but I do have time to tell everyone my uninformed opinion."
But we're taking turns to act as a sort of executive-officer-for-the-week--
Please do not read this sig. Thank you.
There's not a lot that's completely new. Maybe it's just me but it seems like most "new" languages I see bear a strong resemblance to one or another old one. So why the new ones? They aim to fix some weaknesses that existed in the older languages. Python to me seems likes a reaction to the arcane and messy world of perl scripts.
Lots of stuff is borrowed and this helps adoption rates.
And yes, I do think a lot of programmers enjoy learning new languages.
Python improved on the existing scripting languages, but it fucked up the v2 to v3 transition and lost some momentum in the process. It's still the most popular scripting language ignoring javascript, so I don't see a lack of staying power. Pascal simply lost to C, they competed in a single niche and winner takes all.
I don't think your perception of how fast the field moves is accurate.
Thank you, Captain Fucking Obvious.
The question was no doubt related to the fact that there isn't any misspelling or incorrect grammar in the quoted excerpt. I can only surmise that the Wired reject who wrote the article somehow thought it should be "despite", which wouldn't make any goatfrigging sense at all in that position.
Or he's one of the increasing number of imbeciles who think it means "I don't agree with the preceding". The kind who also write "per say" and "add norzium".
Confucius say, "Find worm in apple - bad. Find half a worm - worse."
No, it is not used that way. It means the editor is indicating the preceeding word or phrase is either spelled incorrectly or has incorrect grammar. It's usually used in a quotation that is reproduced verbatim and copies the incorrect spelling/grammar, to let the reader know it is intentional.
I'm also wondering why they used it in normal parentheses rather than the proper square brackets too.
take over? I am sure he would not mind helping out or?
Detractors aside, Python is a great language. Of course, like all languages it has its warts.
But flexibility wise, it is awesome.
Learning Python has been on my to do list for decades, and finally I got to it last year.
Among the things I developed with it is a small web application specific to one project (a form that users fill, and get back a configuration file). This used the Bottle framework.
I am also using Micropython on ESP8266 and ESP32 microcontrollers, and it is easy to press Ctrl-C and have a Python prompt over USB! Debugging is very easy, and the language is very easy.
Not to mention things like Home Assistant, which is written in Python, and writing custom modules for it was pretty easy, once you got to learn HA's API.
So Guido: thank you so much for decades of making things work for us. I wish I have learned it sooner, but better late than never ...
2bits.com, Inc: Drupal, WordPress, and LAMP performance tuning.
As there was no misspelling nor error in conversational grammar it can either be attributed to an editor attempting and failing to appear clever, or that the journalist is misusing it for an equally incorrect reason, such as the one GP opined.
So, either a dumb editor or a reporter imposing bias. How can I get into this journalism lark and get paid to write crap?
"Wait. Something's happening. It's opening up! My God, it's full of apricots!"
/. missed a trick in quoting the FA thus:
"I don't ever want to have to fight so hard for a PEP ... and find that so many people despise (sic) (sic) my decisions."
Python has a Global Interpreter Lock problem that slows down multiprocessing significantly and it hasn't been solved.
Hasn't been solved....except in every implementation that isn't CPython. If your code really needs to not have the GIL, run it in IronPython or Jython or any of the others.
Also, if your code is that performance-critical, an interpreted language is not a good idea.
It seems to me that now there is less enthusiasm for Python. Is that correct?
Python has longstanding performance issues that the project governance has declined to address, giving a big boost to more sensible/responsive projects like Go. And the mandatory whitespace is just idiotic, sorry but it is. Plus scoping is crappy and if you want to do static typing, sorry you just can't.
When all you have is a hammer, every problem starts to look like a thumb.
This has always been the absolute lamest complaint about Python.
Benevolent Dictator discovers it sucks being Benevolent. Would prefer regular Dictator title.
I've been using Python since the mid 2000's, and the evolution of its design has been worrying. The 2-to-3 transition is an obvious, glaring example.
But there has also been a steady accretion of additional syntax and language-level features, leading me to think the project is taking a C++-like attitude of never saying "no" to any proposal, just throw the next one on top of the pile. Type annotations, decorators... and now this recent PEP, which changes the most basic syntactic distinction in the language (expressions vs. statements).
Coherence and conceptual integrity are important, and each one of these changes chips away at the essence of the language and adds complication. Some amount of change is healthy, but it has to be managed carefully by language designers who are willing to say "no" and say it often. Erlang, Lua, and Go come to mind as well-managed languages that haven't lost sight of their original design.
I don't know if Python is better off without Guido, but from a language design point of view, I don't think he's done an especially great job.
Interpreted language for performance critical system?
The lack of clue is strong in this one. Java also has an interpreter but it light years ahead of Python in performance.
When all you have is a hammer, every problem starts to look like a thumb.
But it would still run correctly in perl...which is why some hate and some love it. Sometimes a grammar Nazi myself, but hey, whoosh!
After all, grammer is the difference between knowing your shit, and knowing you're shit. The whom is so obsucre here I'd wager most don't know what you're talking about. We're still working on "loose" is not the opposite of "win" around here...
Why guess when you can know? Measure!
My issue with python is the use of indentation and blank lines as a part of the syntax. That crap went out of vogue with Fortran...
Do you know much about FORTRAN?
FORTRAN was structured such that each line fit on an 80 column punched card. It's sort of a modern anomaly to code FORTRAN with a full screen editor. Historically, it was coded in handwriting on grid paper forms with 80 boxes for the characters of each line of code. You wrote the code by hand, then turned it in to a keypunch operator.
Programmers who wanted to punch their own code would stick around until office hours were over to get access to the keypunch in person. There were actual manual card punch tools to slide a punch mandrel back and forth over an individual card to 'fix' an individual line of code in the deck without having to wait for access to the cardpunch. Yes, the program's primary form of storage was a deck of cards. Don't drop your deck!
Comparing python to fortran is a bit silly.
And yes, obviously modern FORTRAN is different.
You mean where he wrote "and find that so many people despise (sic) my decisions"?
It means "despise" isn't his own choice of words - it's literally the actual word used by the people he's talking about to describe how they felt about some of his decisions, and not merely his interpretation of how they felt.
The word "sic" is short for the Latin phrase "sic erat scriptum", which translates roughly to "exactly as written". It's used by writers to indicate when they are deliberately reproducing someone else's words, phrasing and spelling.
The lack of clue is strong in this one. Java also has an interpreter but it light years ahead of Python in performance.
I'm sorry, I may have missed something, but I thought what Java had was a JIT compiler, not an interpreter.
"You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
but I thought what Java had was a JIT compiler, not an interpreter.
The interpreter is the JIT compiler. It only compiles stuff when it measures it should be compiled. In a long running application that is obviously nearly everything.
Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
Your partial defense of APK is misguided. That is, indeed, him making those posts. I'm almost certain of it.
When APK is impersonated, he doesn't hesitate to posy angry replies about it. He's done nothing of the sort here. The "shekelboy" posts and almost certainly the long-winded anti-semitic replies are APK's doing. Just a few hours ago, he was replying to posts about impersonation with "shekelboy" posts, including in response to actual and obvious impersonation of him.
It's unfortunate. I've made the same defense of APK at times that you have. Many people have done so, attributing his actions to mental health disorders. As far as I'm concerned, he's no longer worthy of any such defense.
Or to put it another way, Python is the 8-bit interpreted BASIC of the 21st century.
sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
Remind me never to hire you.
sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
You can't have a high level language that supports threading and is also easy to use unless you have a GIL. Or at least, if we presume that you absolutely have to have a C/C++ interface for libraries, then you need a GIL to have threads.
Rubbish. Even for extremely simplistic implementations, you don't need a GIL where a "global foreign function interface lock" would suffice.
Most C and C++ libraries are thread safe (for some definition of "thread safe") these days, and any non-toy language with a C foreign function interface can cope with this just fine. This is doubly true of declarative languages, which tend to go to a lot of trouble to ensure that you can call pure functions in C with no locking overhead.
sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
Don't hire me. I've seen your sig.
You could also add a macro preprocessor. I've considered doing this for documentation purposes, but actually Doxygen is good enough. Sphinx, however, was a terrible choice, and pydoc generates eye-tearingly horrible html. (This is a pity as it's ancestor for Python 2, Epydoc, was my favorite documentation tool for Python. )
I think we've pushed this "anyone can grow up to be president" thing too far.
And the mandatory whitespace is just idiotic, sorry but it is.
Python just implements it badly. Nobody complains about mandatory whitespace in Haskell, partly because it doesn't have Python's rough edges, and partly because it isn't strictly mandatory.
sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
Well, with a modest preprocessor you can already do so. Just pick an appropriate unicode character, say U+00B7, to use as your spacing character, and have the preprocessor change it to tab (or spaces, your choice).
I think we've pushed this "anyone can grow up to be president" thing too far.
Let's just say I've had that sig for a while.
sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
I agree. Of all the hurdles preventing anyone from shipping production-quality code in Python, this is by far the lowest.
sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
A typical Hotspot VM has something like three interpreters and a JIT compiler. Modern Java is essentially designed to waste RAM.
sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
It's my fault. I should have included "(sic)". It wasn't my error, but in the letter I was quoting!
Your ad here. Ask me how!
Python improved on the existing scripting languages, but it fucked up the v2 to v3 transition and lost some momentum in the process.
It's true that the 2 to 3 transition didn't go as smoothly as hoped. I'm not sure I agree that the Python devs messed up the transition. Maybe nobody could have done a better job, and I do think the changes were worth doing.
Python 3.x was an opportunity to make "breaking" changes to Python: to make changes that would break old Python 2.x programs. Using this opportunity, the Python devs cleaned up the language.
Some method functions returned lists, others returned iterators... now in Python 3.x everything returns iterators, because it's trivial to turn an iterator into a list. So your programs are "lazy" by default, and there's less cognitive overhead. Win/win.
I'm fond of the change where 1 / 2 returns 0.5 instead of returning 0. It's a bit surprising that integer division can return a float result, but it's even more surprising to most people for nonzero numbers to produce a zero result.
I'm also fond of the way Python 3.x forces I/O to handle Unicode conversion, so a 3.x program either fails instantly the first time you test it or else runs reliably. The Python 2.x "feature" of letting you ignore Unicode, then randomly blowing up later, was enough to make me eager to make the switch.
So IMHO the changes were well thought-out and I approve of them. But they were changes. The real problem is that Python 2.x is a pretty sweet language, so staying with it was pretty attractive. There would be nonzero pain to migrate to Python 3.x, so doing nothing was an attractive choice.
But over time the various popular libraries were converted to be Python 3 compatible, and the Python devs kept adding improvements, and now basically everyone agrees that Python 3.6 and newer are the best Python versions ever.
It's free software and someone could have forked the sources for Python 2.7 and backported features from Python 3.x; but nobody loved Python 2.x that much. Grumbling and inertia yes, actual work to keep Python 2.x viable no.
Pascal simply lost to C, they competed in a single niche and winner takes all.
I agree 100%. There was nothing Pascal did that C couldn't do, and do better. In the early days C was much less type-safe but that was fixable and has been fixed.
C is the king of the third-generation languages and is unlikely to be displaced in the foreseeable future.
lf(1): it's like ls(1) but sorts filenames by extension, tersely
Python has longstanding performance issues
Fair enough. It's much slower than even Java, let alone languages like C. (But it can use libraries written in compiled languages like C and Fortran so it can be extremely fast in specific domains.)
that the project governance has declined to address
You say that as if the Python devs are refusing to do something that would be easy. The latest versions of Python are faster and more memory-efficient than earlier versions of Python. The design of the language makes it hard to really optimize so there aren't easy performance gains just waiting for someone to make them.
The fastest Python is PyPy, and that's fast because it has a JIT that compiles your code's hot spots into native code. It isn't that fast until the JIT kicks in.
And the mandatory whitespace is just idiotic, sorry but it is.
You're entitled to your opinion, but please don't give your opinion as if it were a fact. Some people, such as me, like the fact that if code looks like it's part of a block, it actually is part of a block. I don't think that's "just idiotic". You're free to hate it and I won't try to convince you.
Plus scoping is crappy
I have no idea what you are complaining about here.
if you want to do static typing, sorry you just can't.
Actually, you can. Python 3.x supports "type annotations" which let you document the types that various values should be, and there are static checkers that make sure your programs conform to the annotations.
The static checking is not built-in to Python itself, so you could say that Python "enables" static type checking without "providing" it. But to say that "you just can't" do it is a mistake.
By the way, the history of type annotations is IMHO interesting. Guido van Rossum found out that multiple large organizations (Google, Microsoft, etc.) were making their own ad-hoc static type annotations, requiring standardized comments that documented the types. He applied the principle that "there should be one, and preferably only one, obvious way to do it" and added type annotations to the language spec.
The static type checker still works in Python 2.x if you use appropriate comments.
http://mypy-lang.org/
lf(1): it's like ls(1) but sorts filenames by extension, tersely
Also, if your code is that performance-critical, an interpreted language is not a good idea.
Yup, try convincing ESR about that.
"Sufficiently advanced satire is indistinguishable from reality." - [Tips: 1DrYakQDKCQ6y52z6QbnkxHXAocMZJE61o ]
van Rossum is Dutch, and they spell it as "verachten".
Yeah, of course, the Dutch would say "verachchchchchten", and not something more hygienic like "gardziÄ".
Perhaps working on Python wouldn't be so rancorous if the project was pulling in the same direction.
Everyone is slamming this comment, and I myself don't fully agree with it, but I think the OP has a point. If you have a lower-level language that can scale up to a degree, *and* a higher-level language that can interface with it, then you get the best of both worlds. Where I disagree is that I don't know that C, C++, or Python are always going to be the best choices in all circumstances.
Nonaggression works!
Why do programmers adopt new languages so enthusiastically? Is that an interesting hobby?
Why are you on this site? How did you get here? Why do you stay?
I'm really serious. How did you become a /. poster/reader with a moderately low UID while seemingly being totally unfamiliar with programmers?
Velociraptor = Distiraptor / Timeraptor
Yeah, overall I'm not a fan of the GIL, but I think this kinda misses a some of what the GIL provides - it's a bit more than thread safety inside a function library or around an FFI call. The GIL makes it so you can't corrupt the internal state of the VM including high level data structures like dictionaries and objects.
For example you can have any number of threads concurrently reading and writing to dictionary, sets, custom objects, arrays, etc. without any sort of explicit locking and it doesn't crash, there are no memory leaks, and your data structures don't get turned into corrupted garbage. And this happens automatically with pure Python code, regardless of whether it's built in, you wrote it, or it's from some third party.
So the cost of this feature is crazy high - sometimes too high - but it's not without its benefits.
Your 2->3 experience sounds similar to mine... lots of good changes were introduced with 3.x. I stayed with 2.x for a long time because it just worked really well. And I still have a few projects that are on 2, but at some point when starting a new project I just used Python 3 for it, and by then every library I needed had already been converted.
Honestly, the biggest hurdle was muscle memory on debug prints (statement vs function call), haha.
Otherwise the reader might think something was edited out of the quote for brevity.
Beware: I believe all are created equal, and have the right to life, liberty, and the pursuit of happiness.
Thankyou for stepping down Guido. Now maybe something can seriously be done about Python's crappy performance.
Yah, whoever modded that down can consider themselves part of the luddite mafia dedicated to keeping Python crappy. Proud of yourself.
See, this is why Python still sucks.
When all you have is a hammer, every problem starts to look like a thumb.
For me it was the relative imports. I want to shift to Py3 but haven't. At first it seemed like a great thing but then it turns out you must distinguish between scripts and modules. You get this long list of ways imports can either work or not work depending on things.
First, I like relative imports. I move stuff around (files and directories) and I don't want to update imports more than necessary. If moving stuff is hard, I don't do it and the code suffers.
Second, I like adding small run scripts at the end of all files which run the unit tests (or manual tests or both). This way I can configure most simple text editors to just "execute the current file" to run the relevant tests. No IDE necessary. Also, it provides a direct link between the module and the module specific tests so I don't run more tests than necessary. Most IDEs and test runners can't do that with just a quick keyboard shortcut but tend to run all tests or require a lot of key pressing to "select" the right tests.
In python 3, I can't combine the two wishes above. Ten years after Py3 and I still haven't decided what to do about it. Either, accept always using absolute imports OR never execute a module. Guido said at some point that mixing executable scripts with modules was an antipattern but I do not agree. It means the language can do things you would normally need an IDE for. Batteries included.
All in all though. Python is fantastic and the proof is in the libraries from pandas to all that webstuff. Thanks Guido!
Thank you for the good explanation of additional details.
Just wanted to reiterate that the cost is only high, and in fact only even exists, when using threading within a single process; using the unix style of fork/exec leaves the GIL not even having a cost at all.
Generally the language designers assume that if you care about performance, you can do it the old way painlessly, but if you don't care about performance, you shouldn't even have to worry about it. And a GIL provides for both of these situations.
Someone invent a time machine and go back and convince him that those little sideways moustache things are pretty cool. Look at the way the little ends curl round, like they're trying to contain something betwen them.
Confucius say, "Find worm in apple - bad. Find half a worm - worse."
Are there any computer languages that are well-designed and well-documented?
C# might not be popular on slashdot, but it is well-designed and incredibly well-documented.
Shit gets produced in every language. In java or scala you'd be dealing with some pretentious douchbags insisting on doing things this way or that and failing to see the bigger picture.
That's why languages like PHP have and installbase others can only dream of. And if you think Python has bad code you don't know nothing.
I've been doing PHP for a living in the last 6 years or so and I'm probably going to stick with it because there's work to do and shit to clean up at every streetcorner.
As Strousstrub says: There are two types of languages: those that everyone complains about and those that nobody uses.
We suffer more in our imagination than in reality. - Seneca
"sic" can be used to indicate that the reporter disagrees with the preceding assumption.
Yes, I suppose. Roughly, it might be translated "yes, he really said exactly that", so I suppose you could infer that to include some modicum of disagreement.
http://www.geoffreylandis.com
In the real world, C is prone to all sorts of all-too-common human errors, including bugs that results from code not matching the semantics implied by indentation.
If you regularly collaborate over lossy channels that modify whitespace, set up a pre-commit hook in your version control system that checks and repairs indentation. This is possible for C, PHP, Java, C++, Pascal, or JavaScript, but not for Python.