Python Language Founder Steps Down (zdnet.com) 241
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.
Re: (Score:2, Interesting)
Re: (Score:1)
Re: (Score:2)
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Ä".
Re: (Score:2, Redundant)
"sic" means mis-spelling or incorrect grammar reprinted as originally transcribed.
Re: (Score:2, Flamebait)
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".
Re: (Score:2)
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 w
(sic) indicates the ellipsis was in the original. (Score:2)
Otherwise the reader might think something was edited out of the quote for brevity.
Re:(sic)?? (Score:5, Informative)
"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/... [zdnet.com]
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" [merriam-webster.com] 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 [python.org])-- 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.
Re:(sic)?? (Score:5, Funny)
/. 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."
Re: (Score:2)
Sic was sic [Re:(sic)??] (Score:2)
"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.
Yup (Score:4, Funny)
Definitely sounds like a dictator! Or a poor editor! Or both!
I'm forking it! (Score:1)
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
TESP: Backspaces instead of indents (Score:5, Funny)
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".
We'll lose the first generation (Score:5, Insightful)
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
No. Open source is rather old, but Free Software didn't happen before the revision of the copyright laws that made essentially everything copyright. And Open Source happened in reaction to Free Software.
Things happen in time at a time for a reason...even if it isn't always clear what the reason is.
Re: (Score:2, Insightful)
First gen already started dying off
https://en.wikipedia.org/wiki/... [wikipedia.org]
Re: (Score:2)
https://en.wikipedia.org/wiki/... [wikipedia.org]
I'd say she was an early version of that, but then I guess we could make the same argument about Ford.
Meanwhile in Perl land... (Score:5, Funny)
Meanwhile in Perl land, the founders have tried to step down multiple times, but nobody could read their resignation letters.
Re:Meanwhile in Perl land... (Score:5, Funny)
Re: (Score:3)
Re: (Score:2)
Re: (Score:2)
That's not true. The resignation letters included the phrase "and whomever reads this inherits our responsibilities" so everyone pretends they don't understand.
Re: (Score:3)
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...
Re: (Score:2)
It's my fault. I should have included "(sic)". It wasn't my error, but in the letter I was quoting!
Re: (Score:2)
Re: (Score:2)
Salute to you Sir! (Score:5, Insightful)
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.
Re:Salute to you Sir! (Score:4, Insightful)
IT would be poorer without it.
Yeah, what would we do without code samples whose flow is destroyed by copying and pasting them from webpages? That's really improved my life!
Re:Salute to you Sir! (Score:4, Insightful)
I consider a communication medium that mutilates messages to be defective, not the messages that are being mutilated.
If the same thing happens to a piece of C code, a) it still works and b) you can run it through indent to get back something human-understandable. Python has to exist in the real world where things like this happen. The people who defend this characteristic of Python clearly do not live where the rest of us live.
We used character position to control flow by putting things in columns on the older computers. Then we stopped doing that, and it was a significant advance. Then Python started doing it again.
Re: (Score:2)
If the same thing happens to a piece of C code, a) it still works and b) you can run it through indent to get back something human-understandable. Python has to exist in the real world where things like this happen. The people who defend this characteristic of Python clearly do not live where the rest of us live.
It's amusing that you choose C to bash this particular aspect of Python with. 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.
C defendants have always put the onus on the programmer, the need for more training or higher quality programmers. But here you are passing final judgment on Python because of what amounts to an annoyance.
Re: (Score:2)
C defendants have always put the onus on the programmer, the need for more training or higher quality programmers. But here you are passing final judgment on Python because of what amounts to an annoyance.
Python doesn't stop people from writing poor-quality code, and meanwhile, this "annoyance" has caused me problems personally — before even trying to use Python for anything serious. I'm glad I learned my lesson at that point. I'm only sad that so many people have based their projects on Python, because it means that they have subjected many others to their madness.
Re: (Score:2)
Python doesn't stop people from writing poor-quality code
No language does, but it does prevent code where indentation does not match semantics. Beyond that, there are many, many C-style errors that are avoided in languages like Python, errors that traditional C apologists shrug aside and make noises about programmers not blaming their tools.
'm only sad that so many people have based their projects on Python, because it means that they have subjected many others to their madness.
*snort* Keep on ignoring the madness of C.
Re: (Score:2)
*snort* Keep on ignoring the madness of C.
C and its descendants have good reasons for their insanity, like backwards compatibility, and efficiency. Python has no good reasons for its insanity, especially since its creator should have been able to learn from other languages' failings, and from computing history. People are constantly reimplementing Unix poorly because of their failure to understand it; this is an example of the same kind of thinking.
Re: (Score:2)
C and its descendants have good reasons for their insanity, like backwards compatibility, and efficiency.
The backwards compatibility is understandable, which basically says the multitude of bug-prone design choices are enshrined into the language forever. The efficiency reasons are overused as an excuse for a language that is pretty terrible with regards to consistency or avoidable bug-prone design decisions.
Python has no good reasons for its insanity
Actually, the bug-prone issues of languages like C where semantics does not match presentation is one of the reasons Python chose the path it did, so it's quite funny that you choose C to bash Python with
Re: (Score:2)
Indentation shouldn't need to match semantics. That's what punctuation is for.
Indentation is for the benefit of humans. If your semantics is defined by something sensible like { }, if fi, begin end or whatever - doing one thing and doing it properly - then it's a trivial matter to run it though a lovely lister to get any indentation that any particular human desires.
P.S. Bagging on the GP for choosing C as an example is
Re: (Score:2)
Indentation shouldn't need to match semantics. That's what punctuation is for. Indentation is for the benefit of humans.
Err, since the presentation of the code is for humans, to allow bugs due to human-prone errors that can trivially be disallowed is nonsensical. You could keep the punctuation and disallow for the misleading indentation. Obviously Python eschewed that option, but let's not pretend that buggy code should be tolerated if we can avoid it trivially by the compiler.
P.S. Bagging on the GP for choosing C as an example is pathetic.
No, what's pathetic is using C as your comparison, when C is so demonstrably bad.
Re: (Score:2)
I can "trivially disallow" nesting errors by counting +1 for each { and -1 for each }.
Of course, you introduce a new class of errors by having space+tab and tab+space look the same but not be considered so by the compiler.
I don't deny that C has faults but they're irrelevant to the matter at hand, which is that making indentation significant is crap. Pretend it says pascal bash if it makes you feel better. Seems you need it.
Re: (Score:2)
I can "trivially disallow" nesting errors by counting +1 for each { and -1 for each }.
You mean you're going to manually do that every time you look at a piece of code, and ignore the indentation? No, you're not. That's why bugs exist because of misleading indentation.
Of course, you introduce a new class of errors by having space+tab and tab+space look the same but not be considered so by the compiler.
I agree, I do not like Python's implementation. I think they should have disallowed mixing of spaces and tabs. Of course, when it comes to reading code, C (or pick your favorite language) has always had trouble with tabs vs. spaces.
I don't deny that C has faults but they're irrelevant to the matter at hand, which is that making indentation significant is crap.
It's relevant, because C was used to dismiss Python as a language on a single issue in which C has
Pre-commit hook fixes indent in all but Python (Score:2)
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.
Re: (Score:2)
And how many people actually run these tools? There's something to be said for having compiler-checked semantics.
Re: (Score:2)
Re: (Score:2)
Frustrated, are we? (Score:2)
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:
Re: (Score:2)
But one size doesn't fit all either. Loose typing, by whatever name (I like duck typing) works out some places nicely, and horribly in others. Not everything is text being served, some of us do scientific work, for example. Loose typing and poor coding along
Re: (Score:2)
Deciding such things by stack overflow or GitHub...a silly idea. The language most represented in the first is the one people have the most questions about. Which means either entitled shits who won't read a book or try things on their own, or some defect in the language itself.
Github is for people who can't do their own version control, do nothing wor
Re:Salute to you Sir! (Score:5, Interesting)
You can tell a lot of thought was put into Python, but almost exactly none of that thought came from anyone who knew more than a couple of programming languages. Python reimplements many of the mistakes of the past, and not very well.
IT would indeed be poorer without Python. There's a whole cottage industry in getting rich from fixing broken Python code.
Re: (Score:2)
Yeah, I make a living fixing Haskell code written by morons.
Steps down? (Score:2)
He steps down.
If I recall my childhood correctly, he could have just slid down a python instead.
out of the loop (Score:5, Funny)
Unfortunately ... (Score:2)
I'm the new dictator (Score:5, Funny)
Re: (Score:2)
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.
If you're saving disk space does that mean "{" should never be placed on a new line.
Re:I'm the new dictator (Score:5, Funny)
Re: I'm the new dictator (Score:2)
Re: (Score:2)
{ is"left titty" and } is "right titty".
A good rule of thumb is you always need as many left ones as right ones .
Wow! You can step down from founding something? (Score:3, Funny)
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!
Re: (Score:2)
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!
Is that you, Papa John [cnbc.com]?
Re:Wow! You can step down from founding something? (Score:5, Funny)
I don't have to defend my observation. I've stepped down.
So Long and Thanks For The Snakes (Score:4, Insightful)
The IT world would be poorer without all his work. Time for a well deserved vacation.
Clearly we need an anarcho-syndicalist collective! (Score:2)
But we're taking turns to act as a sort of executive-officer-for-the-week--
Thank you for Python .... (Score:4, Insightful)
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 [bottlepy.org] framework.
I am also using Micropython [micropython.org] 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 [home-assistant.io], 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 ...
Poorly managed language design (Score:4, Interesting)
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.
Re: (Score:2)
Python has reached its middle-aged bloat. There was plenty of saying "no" for the first ten years or so. It's now got a lot of features that are all useful for somebody, and a lot of cruft that's accumulated as the obvious way to do things has changed. It's becoming an advanced language for experts rather than a simple and versatile language that's quick to pick up. This isn't a unique problem and calling it poorly managed is unfair to the language designer. The time's ripe for a new language designer
Re: (Score:2)
It all started to go downhill when kids snuck features like "while" and "for" into our PLs, when everyone knows that a conditional with a goto is perfectly readable and works just as well.
Outlasted by Python 2.7 (Score:2)
31 years too late (Score:2)
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.
Comment removed (Score:5, Informative)
Re: Questions and observations (Score:5, Insightful)
Re: (Score:3)
Or to put it another way, Python is the 8-bit interpreted BASIC of the 21st century.
Re: (Score:2)
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. )
Re: (Score:3)
Lots of stuff is borrowed and this helps adoption rates.
And yes, I do think a lot of programmers enjoy learning new languages.
Re: (Score:3)
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.
Re: (Score:3)
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
Re: (Score:2)
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.
Re: (Score:2)
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
Re: (Score:3)
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.
Re:Questions and observations (Score:5, Interesting)
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.
Re: (Score:3)
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
Re: (Score:2)
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?
Re: (Score:2)
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.
Re:Questions and observations (Score:4, Informative)
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.
Big legacy projects (Score:2)
Also, if your code is that performance-critical, an interpreted language is not a good idea.
Yup, try convincing ESR about that [phoronix.com].
Re: (Score:3)
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.
Re: (Score:2)
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, t
Re: (Score:2)
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.
Re: (Score:3)
Remind me never to hire you.
Re: (Score:2, Funny)
Re: (Score:2)
Let's just say I've had that sig for a while.
Re: (Score:2)
Re: (Score:3)
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.
Re: (Score:2)
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.
Re: (Score:2)
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.
Re: (Score:2)
A typical Hotspot VM has something like three interpreters and a JIT compiler. Modern Java is essentially designed to waste RAM.
Re: (Score:2)
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.
Re: (Score:2)
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).
Re: (Score:2)
I agree. Of all the hurdles preventing anyone from shipping production-quality code in Python, this is by far the lowest.