Interview With Python Creator Guido Van Rossum (techrocket.com)
The online programming school Tech Rocket just published a new interview with Guido van Rossum, the creator of Python. "Looking back I don't think I ever really doubted Python, and I always had fun," he tells the site. "I had a lot of doubts about myself, but Python's ever-increasing success, and encouragement from people to whom I looked up (even Larry Wall!), made me forget that."
He describes what it's like being Python's Benevolent Dictator for Life, and says that the most astonishing thing he's seen built with Python is "probaby the Dropbox server. Two million lines of code and counting, and it serves hundreds of millions of users." And he leaves aspiring programmers with this advice. "Don't do something you don't enjoy just because it looks lucrative -- that's where the competition will be fiercest, and because you don't enjoy it, you'll lose out to others who are more motivated."
He describes what it's like being Python's Benevolent Dictator for Life, and says that the most astonishing thing he's seen built with Python is "probaby the Dropbox server. Two million lines of code and counting, and it serves hundreds of millions of users." And he leaves aspiring programmers with this advice. "Don't do something you don't enjoy just because it looks lucrative -- that's where the competition will be fiercest, and because you don't enjoy it, you'll lose out to others who are more motivated."
of code? Seriously, WTF.
Works as long as what you make in that language won't get too big.
I think that's true of all languages.
My impression (having written O(10k) line Python programs for fun) is that it's quite capable of implementing the kind of O(1m) line COBOL, PL/1 & C systems I worked on in the 80s and 90s - probably in a tenth of the size too. It's also infinitely better for "Rapid Application Development" (is RAD still a thing?) than the 4GLs and BASIC variants we used back then.
Python is one of the few bright spots in the evolution of programming languages over the past 30 years. Too bad van Rossum fucked up the transition to version 3.
Like the java virtual machine, for which you compile to BYTE CODE!!!1!
Serpent, maybe?
Serpent is a real-time scripting language inspired by Python but completely reimplemented to support real-time garbage collection and multiple instances of the virtual machines running on independent threads.
https://sourceforge.net/projects/serpent/
If you're still running Python 2 code, you should into the mirror see where the problem lies.
The problem lies far beyond the mirror. It lies in the dozens of libraries that I rely on that have not upgraded to Python 3 (despite pleas to the original authors). It relies on the hundreds of hours of porting, testing, and double checking that I will need to do to move my code over to Python 3. The improvements in Python 3 are real, but they are not worth the enormous burden imposed on everyone to get their code to be Python 3 compliant.
Fast Federal Court and I.T.C. updates
I know this article was focused on Guido's softer side, but would have liked them to mention the elephant in the room: the move from Python 2 to 3. This been a huge resource drain on the entire community and many (including me) remain unconvinced that it was the right decision. It would have been nice if the topic was broached.
Fast Federal Court and I.T.C. updates
What I'm most curious about is why the Python community is so much nicer to deal with than the Rust programming language's community.
I've seen so much help and compassion from the Python community. I'm not just talking about questions that I've asked, but questions and problems that I've witnessed other people ask about. The Python community is always so supportive, and in all of the right ways. They aren't smug or holier-than-thou. They don't tell you "you're doing things wrong". They may ask for more information, but then they always provide a helpful response without resorting to snark or a bad attitude. They're friendly and pleasant people to deal with.
Then there's the Rust community. In my opinion and experience, it's so much worse than the Python community to deal with. The smugness is pretty extreme from them. They will often tell you that you're "doing it wrong", even when you're doing something a certain way for a very good reason that they just don't/can't comprehend. It's almost like they're more concerned with their own feelings than with helping somebody who is in needed. And you'd better hope that you don't say the wrong thing at a site like Hacker News or reddit, because the Rust downvote squads will take you out quite rapidly! The last thing they want to hear is legitimate criticism of Rust. All of the emphasis that the Rust community places on the Rust Code of Conduct and the Rust Moderation Team apparently doesn't do any good, because the Rust community is not one that I like to deal with!
Maybe it's a maturity/age thing that causes the Python community to be so much nicer to deal with? The Python community members are generally older and more experienced. The Rust community members are typically much younger, with some of them not even being out of high school yet. Maybe the Python community is better to deal with because the Python community members have more professional real-world experience, while Rust community members often have none at all? The Python community members are more laid back and confident with providing help, while the more immature Rust community members are on a quest to inflate their sense of self worth?
Actually, Guido didn't "fuck up" the transition to Python 3. It was done almost perfectly.
People using Python 2 haven't been affected by it much. They can upgrade whenever they want, and Python 2 has still seen excellent support from the Python maintainers.
Meanwhile, Python 3 has been able to resolve some serious problems with Python 2, providing a much richer and more useful language. Developers have been moving to Python 3 at their own pace, which is exactly how it should be!
Now that Python 3 has proven itself, it's seeing widespread adoption within the Python community. It's what almost everyone is using for new code.
If you want to see an example of a real fuck up, look at Perl 6. That's a real disaster! Here we are, over 15 years later, and there's still so little to show. Rakudo is an awful joke. Even the Perl 6 logo is goddamn childish.
Another example of a really fucked up programming language is Rust. They kept promising Rust 1.0, and then it kept getting pushed back again and again. But while this was happening the language was changing significantly almost every day. So code you wrote on a Monday often wouldn't compile at all by the following Wednesday, and would need significant reworking by the following Friday! The first impression a lot of people got about Rust was a lack of stability and having to rewrite their code every week. Even the 1.0 release was pathetic. Despite being "stable" releases, it took them up until Rust 1.6 to get their libcore stable!
I suspect a lot of that code lies in redundancy and load-sharing systems. Python is notoriously bad at multithreading (so much so that most python coders prefer a library called multiprocess that fakes multithreading by spawning new python processses entirely) - so load-balancing, load-sharing and redundancy under heavy use are problems python is particularly bad at (not the language so much as the architecture of the implementation to be fair).
So it's likely a great deal of the code is dedicated to solutions to those difficult problems. It also rather depends on how you count it. Other things that could contribute large amounts of code:
- They likely use a custom application server (in order to implement all that redundancy and load-sharing)
- There's likely a significant amount of debug logs in there, and extensive logging throughout (you need that if you're going to keep something like this maintained and find/fix problems quickly).
Finally - the comparison is not actually very fair. The Kernel is written in C - a language designed for brevity, while python is much more verbose. Python is not a language that encourages lots of one-liners, except where they can be used to avoid deep nesting (which is actively discouraged) or in purely functional calls (which are available but only encouraged for specific use-case determined algorithms where the non-functional version would actually be harder to read).
So the exact same algorithm is likely to use more lines in python than in C - and be a lot easier to read. I was not surprised to learn from this interview that a lot of his own early work was in Pascal and Algol - you can see a lot of the Wirth philosophy in Python. Python in a very real sense struck a perfect balance between readable verbosity and cruft. Java is too far to the other side, you need about 100 lines just to show a simple "exit on click" button on the screen and almost none of them have anything to do with the task at hand. The same thing in TCL/TK will take one line, in python it's about 3 lines (depending what GUI library you use).
I recently developed a fairly comprehensive GUI library in python. I was building an RPG in Pygame (need to pick that up again sometime) and pygame has no gui elements and none of the libraries are maintained, so I wrote my own. Python made this ridiculously easy for the most part. Hell at one point I actually wrote a recursive object (that is to say - an class in which one of the methods would instantiate another instance of the same class it's a method off). The class was a box containing a list of items you can select (used for things like the inventory) but when you need to add something to a box like that (say in the game editor - adding treaures into a chest) it instantiates another instance of itself, with different parameters to show you the list of possible things you can add.
That took no clever trickery whatsoever, the method just instantiated the class and operated on the object, python handled all the recursion magic entirely transparently.
That gave me (as a long time python developer) an entirely new respect for just how powerful the language really is. I also strongly suspect that in most languages that activity would have been far more complex, many languages don't even allow recursive classes after all.
Unicode killed the ASCII-art *