Guido van Rossum Looks at Python's Past, Present, and Future (zdnet.com) 89
This week from 63-year-old Python creator Guido van Rossum shared some interesting stories with ZDNet's senior reporter Nick Heath:
While sharing software with the world today only takes a few clicks, in the 1980s it was an altogether more laborious affair, with van Rossum recalling the difficulties of trying to distribute Python precursor ABC. "I remember around '85, going on a vacation trip to the US, my first ever visit to the US, with a magnetic tape in my luggage," says van Rossum. Armed with addresses and phone numbers of people who had signalled an interest in ABC via the rudimentary email system available at the time -- which wasn't suited to handling anything as large as source code -- he travelled door-to-door posting the tapes. Despite this effort, ABC didn't really take off. "So, no wonder we didn't get very far with the distribution of ABC, despite all its wonderful properties," he says.
But as the internet revolution gathered steam, it would be much easier to distribute Python without a suitcase full of tapes. Van Rossum released Python to the world via the alt.sources newsgroup in 1991, under what was pretty much an open-source licence, six years before the term was first coined. While Python interpreter still had to be joined together into a compressed file from 21 separate parts and downloaded overnight on the Usenet network, it was still a vastly more efficient delivery mechanism than the hand deliveries of a few years earlier.
Guido also shared some new comments on why he stepped down as Python's Benevolent Dictator for Life: "I was very disappointed in how the people who disagreed technically went to social media and started ranting that the decision process was broken, or that I was making a grave mistake. I felt attacked behind my back," he says. "In the past, it had always been clear that if there were a decision to be made about a change in the language or an improved feature, a whole bunch of core developers would discuss the pros and cons of the thing. Either a clear consensus would appear or, if it was not so clear, I would mull it over in my head and decide one way or another. With PEP572, even though it was clearly controversial, I chose 'Yes, I want to do this', and people didn't agree to disagree.
"It wasn't exactly a revolt, but I felt that I didn't have the trust of enough of the core developer community to keep going."
He thinks the change in how disputes about the language play out is partly a result of how many people use Python today. "It's probably also the fact that the Python community is so much larger. It's harder to reach any form of consensus, of course, because there's always fringe dissidents, no matter which way you decide." Earlier this year, Python core developers -- those who work on maintaining and updating Python's reference CPython interpreter -- elected a steering council to oversee the future of the language. Van Rossum was elected, alongside Warsaw and fellow core developers Brett Cannon, Carol Willing, and Nick Coghlan.
But as the internet revolution gathered steam, it would be much easier to distribute Python without a suitcase full of tapes. Van Rossum released Python to the world via the alt.sources newsgroup in 1991, under what was pretty much an open-source licence, six years before the term was first coined. While Python interpreter still had to be joined together into a compressed file from 21 separate parts and downloaded overnight on the Usenet network, it was still a vastly more efficient delivery mechanism than the hand deliveries of a few years earlier.
Guido also shared some new comments on why he stepped down as Python's Benevolent Dictator for Life: "I was very disappointed in how the people who disagreed technically went to social media and started ranting that the decision process was broken, or that I was making a grave mistake. I felt attacked behind my back," he says. "In the past, it had always been clear that if there were a decision to be made about a change in the language or an improved feature, a whole bunch of core developers would discuss the pros and cons of the thing. Either a clear consensus would appear or, if it was not so clear, I would mull it over in my head and decide one way or another. With PEP572, even though it was clearly controversial, I chose 'Yes, I want to do this', and people didn't agree to disagree.
"It wasn't exactly a revolt, but I felt that I didn't have the trust of enough of the core developer community to keep going."
He thinks the change in how disputes about the language play out is partly a result of how many people use Python today. "It's probably also the fact that the Python community is so much larger. It's harder to reach any form of consensus, of course, because there's always fringe dissidents, no matter which way you decide." Earlier this year, Python core developers -- those who work on maintaining and updating Python's reference CPython interpreter -- elected a steering council to oversee the future of the language. Van Rossum was elected, alongside Warsaw and fellow core developers Brett Cannon, Carol Willing, and Nick Coghlan.
Pros and cons of Social Media (Score:4, Funny)
On the con side, we have poisoning of positive discourse.
On the pro side, faster distribution of cat videos!
Re:Pros and cons of Social Media (Score:5, Insightful)
The problem is we are in Eternal September, and people who didn't used to post online now do, thanks to smartphones. They even go to Reddit and places they didn't before (they don't come to Slashdot, because using Slashdot from a Smartphone is awkward).
Re:Pros and cons of Social Media (Score:5, Funny)
You say $^@(TM)using Slashdot from a Smartphone is awkward**#$#*@(TM).
I don%*~&®+^!~~@#+(TM)t agree with that at all. What make you think it%*~&®+^!~~@#+(TM)s awkward?
Perl (Score:5, Funny)
Wait, are you using the "smartquote on smartphone breaks /.'s UTF" excuse to try to sprinkle syntactically correct Perl in the middle of discussion about Python? That would be sneaky...
Re: (Score:3)
I don't think the problem is social media. Newsgroups are social media.
I do agree that the Eternal September effect (which is just our old guard's slang for the greater post-AOL democratisation of the the net) is massively a factor, but I feel you may be flattening the difference between Usenet Newsgroups and what people generally understand by social media, ie. Facebook, Instagram, Twitter etc., a difference which plays directly into said democratisation.
'Social media' (like every term) can take on a var
Re: (Score:3)
now the aim of the game for the significant block of participants, as encouraged (only sometimes deliberately) by the technology, is to garner social approval:
That's a good point. It's almost as bad as advertising.
Re: (Score:2)
I use the friends functionality here, I think it's useful. Though obviously it doesn't allow enough relationships to be really useful. I presume that becomes computationally expensive, though, given that the system tracks friends of friends.
Re: (Score:2)
It does have one use. Once in a while I see that someone is a child who has marked me their "foe", then I make them my "friend" and have a good long laugh at them and make a mental note that when I see a post from them it is a post from some idiot who thinks that there is a use to it beyond what I have just identified. When people mark me as their "friend" I don't react by marking them in any way as friend or foe, but rather just
Re: (Score:2)
It's actually more useful than that. You can assign modifiers by relationship. If I see someone who consistently posts stuff that should be at -1, I can mark them as a foe and avoid wasting time reading any more of their posts.
Re: (Score:1)
Re: (Score:2)
You're essentially using the system as a blacklist/whitelist. While this again isn't perhaps 'social media' as I was describing the term, it approaches it: inasmuch as the network of your 'social' relationship shapes your experience of the site. You are, clearly, being more deliberate in applying the filters.
Re: (Score:2)
I don't think the problem is social media. Newsgroups are social media.
Newsgroups are more a distributed, social discussion forum and not social media.
The motivation to create newsgroups was to improve discussions. The motivation to create social media is to improve attention to a platform (usually to sell ads to steal our attention).
Re: (Score:2)
Social media is powered by comments. Slashdot, and newsgroups my get some money from increase impressions for people going on the site for comments. Social media sells the content of the comments. So it isn't lets send Jellomizer tech based advertisements because he visits a lot of tech sites, but lets send him advertisements based on what we could parse to be his interests and leanings.
Because Social Media companies have been getting more money from comments their algorithms to maximize profits, it to sh
Re: (Score:3)
(they don't come to Slashdot, because using Slashdot from a Smartphone is awkward).
They don't come to Slashdot because Slashdot is old and washed up.
Using slashdot from a smartphone is not too bad, though I do degrade to a lesser posting style where I don't use HTML.
Re: Pros and cons of Social Media (Score:3)
Re: (Score:2)
He shouldnâ(TM)t have stepped down (Score:2)
But then, why suffer assholes. Let karma deal with them.
Re: (Score:2)
Then again, maybe he was getting tired of it and used this as an excuse to exit.
Re: (Score:2)
Python is great only if you've been subjected to something worse.
Python is the worst programming language, apart from all the others I've had to work in from time to time (with apologies to Churchill).
Re: (Score:2)
There was a time when I like Python, at least it is somewhat interactive. That was then, before the decades of no progress on efficiency, among other things.
Re:Actually pretty crappy (Score:5, Insightful)
If you're using Python for the performance critical core of your software (assuming you even have such an issue, rather than being user-bound), you may want to re-examine that. If you're writing your interface in C, you might also want to question that.
Not all tools are hammers, and not all problems are nails.
Re:Actually pretty crappy (Score:5, Interesting)
I use python in HPC software along with a c++ simulator. The simulator uses up 99% of the time and the python parts takes up 1% of the time but there is no way I would ever want to write the python part in c++. That would be 100K loc or so, provide no real speedup but it would be a huge pain in the ass to write.
Python is great for command and control which is why it is so common to use in HPC. That is why you see python in things like AI and not things like java. If you want to use tensorflow then use python.
Re: (Score:1)
I use python in HPC software along with a c++ simulator. The simulator uses up 99% of the time and the python parts takes up 1% of the time...
I know I know I know. This is the hackneyed stock apology for why being shitty doesn't suck. Why even post it? I see a bunch of misty eyed Python programmer wannabes modded you up. Great, you're one of the pack.
Re: (Score:2)
I use python in HPC software along with a c++ simulator. The simulator uses up 99% of the time and the python parts takes up 1% of the time...
I know I know I know. This is the hackneyed stock apology for why being shitty doesn't suck. Why even post it? I see a bunch of misty eyed Python programmer wannabes modded you up. Great, you're one of the pack.
Truth hurts?
Re: (Score:2)
Re: Actually pretty crappy (Score:2)
Nope, just the good majority of them, at one time or another. It (used to be) something of an art form here.
Now get off my lawn. ;)
Re: (Score:2)
Python is great only if you've been subjected to something worse.
Python is the worst programming language, apart from all the others I've had to work in from time to time (with apologies to Churchill).
I guess you've not had to work with many then. Python's syntax is a joke.
The parser will warn you about a million irrelevant things like space around = in "a=3" but won't warn you about "myList.clear" being a NOP (you probably wanted "myList.clear()".
And of course the reason that PEP8 reads like it was written by a Nazi in a bad mood is that Python makes whitespace into the equivalent of gaseous Plutonium - very dangerous and completely invisible. Yay! Print outs of your code are ambiguous! What a great ide
Re: (Score:2)
'The parser will warn you about a million irrelevant things like space around = in "a=3"':
Huh? I *always* put spaces around my '=', and do other weird stuff, like
__init__(foo, bar, bazzleflop)
self.foo = foo
self.bar = bar
self.bazzleflop = bazzleflop
or
somefunction( onearg
Re: (Score:2)
Sorry, I should have said "linter". The system I have to use in work comes with something that uses pep8 to generate an endless list of spam without actually issuing useful warnings about possible run-time problems or mistakes.
Re: (Score:2)
I understand about systems one has to use at work :-(. FWIW, I have recently used some other Python lint-type tools, which were able to pick up some genuinely useful things (like dead code and variables used only once): pylint, vulture, pyflakes (but not flake8!).
Hmm, I can see some reasons to amicably disagree with Guido...
BTW, politeness seems to be in short supply these days, thanks for dipping into your supply!
Re: (Score:2)
Rants like this are pretty substanceless.
If there are features you don't like, point them out and explain.
However chances are: you never really worked with python, so you likely have no clue anyway.
Re: (Score:2, Insightful)
Chances are, you never looked at the Python vm. I have, and I can tell you with certainty that it is a steaming pile of poo. But then you wouldn't know, you wouldn't have the slightest clue what you're looking at.
Re: (Score:2)
Oh, now as you found nothing substantial about Python, the language you want to rant about its VM?
Again you gave no argument, what exactly you don't like, pffft....
No, I did not look at the VM, why would I? It is not my project.
Re: (Score:2)
You didn't look at the Python VM because you wouldn't know what you're looking at, like a dog watching television. Thought as much.
Re: (Score:2)
I actually wrote about 10 VMs.
But you are right, I would not know to look at what, as you gave no hint so far.
And I don't spent my next WE searching for obscurities in a VM I'm not working with.
I think you are an idiot.
I believe you are an idiot.
Actually, I'm convinced you are an idiot.
Re: (Score:2)
I actually wrote about 10 VMs
All 10 must suck.
Re: (Score:2)
Perhaps ... but you will never know :P
Re: (Score:1)
Rants like this are pretty substanceless.
If there are features you don't like, point them out and explain.
However chances are: you never really worked with python, so you likely have no clue anyway
Re: (Score:2)
This website really needs a minimum age check.
Re: (Score:1)
I couldn't agree more. I don't see the point of this language. It's lack of strong typing and declarations make it useful for tiny, one-off scripts and little else. I do embedded C but a few of my friends work at Python shops where they are trying to build huge systems in Python. And without the features needed to build huge systems they have lots of issues.
I know, lots of people will say "Don't build huge systems, decompose your huge system into smaller ones." That's good advice but it only works to
Re: (Score:3)
Re: (Score:2)
You know, I actually hate leaving little piles of one-off poo around everywhere I go. Don't you? I too use Python for some one off things that go beyond a few lines of bash. But I always end up hating myself after, and they often don't end up as truly one time, some of them pull their roots out of the ground and start walking around snapping their thorny little tendrils at unsuspecting bystanders.
Re: Actually pretty crappy (Score:2)
Re: (Score:2)
Cultists don't need facts or education, in fact they make much better cultists when they have neither.
Re: (Score:3)
You see, you have no clue. Like that live guy. ... people with no clue arguing about concepts they don't grasp ...
Python is strong typed. But dynamic instead of static.
Oops
"New and improved" once an original ad campaign (Score:2)
Comments with "Oops . . . " or "but wait" or otherwise engaging in a coy contradiction of one's original straw-man claim were at one in history regarded as witty and clever. Say, between 13:06 GMT on January 5, 1992 and 13:15 on the same date.
After that window of time, everyone got the joke and moved on.
Re: (Score:2)
Python is strong typed.
You're a fucking idiot. Python is "optionally strongly typed", in other words, not strongly typed. The fact that massive numbers of Python nuts get this wrong, including the devs, tells you all you need to know about this fraud of a language.
foo = 1; foo = "1"
Re: (Score:2)
As I said, you and the other guy mix up strong type systems with static type systems. ...
Rofl
Re: (Score:2)
Like I said, you're a fucking idiot. Dig yourself deeper. In a strongly typed language each data area will have a distinct type and each process will state its communication requirements in terms of these types." [wikipedia.org]
foo = 1; foo = "1"
Not strongly typed. If you can't see that, then kill yourself.
Re: (Score:2)
You shouldn't call other people idiots if you don't know what you're talking about.
That's strongly (but dynamically) typed.
That's weakly (but statically) typed.
Re: (Score:2)
Python is strongly typed, otherwise the assignment of a string to an int would have auto interpreted it as some kind of int like in various weakly typed languages.
Re: (Score:2)
Re: (Score:2)
You've managed to confuse yourself about the difference between type compatibility and type coercion.
Re: (Score:2)
Nope, you are confusing yourself.
foo = 1;
foo += 2;
print foo -> 3
foo = "1" // no idea about python
foo += 2;
Either ERROR, or 2 gets converted into "2"
print foo -> "12" // string concat
You still don't grasp the difference between weak versus strong typing and static versus dynamic typing.
Python is a dynamic but strong typed language. If you want to rant, rant about Javascript, which has some pitfalls in the true/false/null/undef and string versus int coercion areas ... that is why people move to CoffeeSc
Re: (Score:2)
It is just the Python weenies who attempt to redefine "does not allow implicit conversions" to mean "strongly typed", and studiously ignore the strongly typed language has stricter typing rules at compile time [wikipedia.org] part, therefore convincing themselves that it is ok to go around bragging that their putrid cesspool of a turing complete abomination actually does something right, which it does not. Just like almost everything in Python, which is why I increasingly detest it as a huge waste of time. Much as you are
Re: (Score:2)
You are still mixing up strong versus weak with static versus dynamic. And compiled or not compiled has nothing to do with it anyway. ... to a VM
K&R C: weak, static type system, compiled
Modern C++, strong static typed, compiled or interpreted (cint or root)
Python, strong dynamic type system, compiled
Groovy, strong dynamic type system, compiled to JVM bytecode, jit compiled to machine code
Assembler, weak or no types, neither static nor dynamic, compiled/assembled to machine code.
Sorry, but a guy who has
Re: (Score:2)
Python, kinda sorta strong types if you hold your tongue the right way, like pretty much everything in Python. Too bad Guido slept through his compiler course, then got a bad case of fuck you this is the first thing I pulled out of my ass and I am going to release it and not fix it and fuck you.
Re: (Score:3)
Most of the pop stuff you see about machine learning is garbage. However, machine learning is used for a lot of very useful applications. One of the common usage cases is function surrogate modeling where you make a machine learning model approximate the output of a much more complex model with the machine learning model being much faster to evaluate. That has been useful successfully for decades now and it works well but you won't see many discussions on it because it does not sound sexy to people, it just
Re: (Score:2)
I think the only reason Python is popular is because of the data science crowd. I find that fitting because that's also something I view as a garbage, transient field that has more momentum from popularity than actual value.
Exactly right, but don't worry, the data science herd will all be jumping off the Node.js cliff next year. Already happening.
Re:Actually pretty crappy (Score:5, Interesting)
Python is the defacto standard for most types of machine learning research. From neural networks with things like tensorflow to gradient boosting and gaussian process models. It is very easy to set them up in python and use them for what you need and pay close to 0% performance cost by handing off the heavy lifting to libraries written in c/c++. If you wanted to do the same thing in Java it would not run any faster but it would be more annoying to interface with the c/c++ libraries. Even stuff like BLAS and LAPACK from Java is more of a pain in the next with Java than Python.
Re: (Score:2)
Re: (Score:2)
You obviously never used Lisp, Python does not come within a country mile of Lisp's flexibility. Python is really closer to Visual Basic than it is to Lisp.
Re: (Score:2)
Re: (Score:2)
If you have never evaled a list you just consed then you have not scratched the surface of Lisp. That's just the beginning.
Re: (Score:2)
I've used all three: Prolog, LISP and Python. I actually found Prolog rather elegant in its own way, but narrowly purposed. You could do exhaustive searches and some kinds of reasoning easily, but you had to stand on your head to do other things. Python has been my language since around 2003. I recently had occasion to do some Prolog programming again, after being away from it for nearly two decades. It was both revealing how far it had come (I could do weighted, if not quite probabilistic, reasoning),
Re: (Score:2)
Python has been my language since around 2003.
Python manages to make me feel I'm swimming with water wings. But suit yourself.
Re: (Score:2)
Python is the defacto standard for most types of machine learning research.
So that must have something to do with why machine learning develops at a snail's pace. Just imagine what they could do with a language that doesn't suck.
Re: (Score:2)
Python is great only if you've been subjected to something worse. Python devs have no respect for performance, they just keep spouting the standard bullshit about if you only use library functions it goes almost as fast as Java (it doesn't) and way faster than bash (it does, but that's not saying much.) What with the scoping idiocy and... fuck off with your "spam", I like my foo. Had it with Python. Congrats for snagging a major chunk of the casual programmer market with the help of your big buddy Google, but basically you Python devs are a bunch of retarded snowflakes lacking the talent to go the rest of the way on what makes Python really suck. I'm afraid Python is doomed to become the next Perl or PHP or Node. Lots of mind share, very little deserving of the mind share.
Hey, you want to make me really detest Python and post about its flaws every chance I get in every forum I post in? Just mod me down again instead of trying to refute my points, you soft brained python cultists. Or just anybody who wants some entertainment. Go ahead, make my day.
Thanks. This is going to be fun.
Um ... (Score:2)
While Python interpreter still had to be joined together into a compressed file from 21 separate parts and downloaded overnight on the Usenet network, it was still a vastly more efficient delivery mechanism than the hand deliveries of a few years earlier.
I think there was a Perl script to automate that ... :-)
Re: (Score:2)
[citation needed]
Re: (Score:2)
a) Significant whitespace.
b) Refusing to admit that significant whitespace is a major problem.
c) Almost everything else connected to the python syntax, starting with the handling of "self".
d) Allowing bald functions.
e) Everything else he ever said or did.
f) Acting like god's gift to coding.
100% asshole.
Re: (Score:2)
Ugh! Python! (Score:2)
Re: (Score:2)
> anonymous cowards can't post this week.
What the fuck is this shit new owners? Slashdot has always been a unique place on the internet with both Anonymous posts followed up with a strong moderation system.
My personal pet hate with Python... (Score:4, Insightful)
Example: Python 3.6 to 3.7
Upgrade broke all kinds of stuff, which subsequently forced me to have to rollback, etc...
This kind of thing is simply unacceptable.
Even Python 2 ->3 should not have broken anything, but for a point revision to break existing code indicates
Re: (Score:2)
Re: (Score:2)
Python 3.6 to 3.7
Upgrade broke all kinds of stuff, which subsequently forced me to have to rollback, etc...
Examples, please. I'm not aware of any breaking changes between 3.6 and 3.7, and if you actually hit some I would like to know about them.
https://docs.python.org/3/whatsnew/3.7.html [python.org]
Were you using async or await as variable names in your code? That's the only breaking change I see in the release notes.
Best repository for Python source? (Score:2)
I feel like I should ask when I see a Python story, but the only slightly relevant "insertion point" I could find was your mention of "Example" as in example code.
I've dabbled with Python and taken a number of courses (I remember EdX and Coursera), but they were all wrapped around writing new code. Basically that approach doesn't float my boat and I never decided how much I actually liked the language.
Rewording it as a personal problem: I'm basically a maintenance programmer. The easiest ways for me to beco
Re: (Score:2)
GitHub categorises projects by their primary language. Not always accurately, but probably sufficiently to help you. If you can find a relevant topic on https://github.com/topics [github.com] then you can filter down to projects in Python.
Re: (Score:2)
I have to agree. I whipped up a side project in Python about 2.5 years ago. It's amazingly broken if I try to run it on what's current today. Granted, a lot of it is the libraries I used, but backwards compatibility just doesn't seem to be a strong point in the Python community.
I'm a bit torn on the Python 2 to 3 transition. The one big thing it fixes is Unicode support, which is a nightmare to handle properly with Python 2. Once again, a lot of it is due to libraries that expect <type 'str'>, bu
Python, past, present and future (Score:2)
Re: (Score:1)
Terry Gilliam is not quite dead yet.
re (Score:1)