Python Turns 30. A Steering Council Member Reflects (venturebeat.com) 83
Today is the 30th anniversary of the Python programming language, "which has never been more popular, arguably thanks to the rise of data science and AI projects in the enterprise," writes Venture Beat.
To celebrate the historical releases file has been updated to include Guido van Rossum's original 0.9.1 beta release from 1991. (Its ReadMe file advises that Python 0.9 "can be used instead of shell, Awk or Perl scripts, to write prototypes of real applications, or as an extension language of large systems, you name it.")
And meanwhile, VentureBeat interviewed Pablo Galindo, one of the five members of the 2021 Python Steering Council and a software engineer at Bloomberg: VentureBeat: What's your current assessment of Python?
Galindo: Python is a very mature language, and it has evolved. It also has a bunch of things that it carries over. Python has some baggage that nowadays feels a bit old, but the community and the ecosystem has to be preserved. It's similar to how C and C++ are evolving right now. When you make changes to the language, it's quite dangerous [because you can] break things. That's what people are scared of the most.
But even though Python is quite old, there are big changes. The Python 3.1 release for this October will include pattern matching, which is one of the biggest syntax changes that Python has seen in a long time. We can learn from other languages. I think we're happy to say that we are still evolving and adapting. We have a good experience with respecting the importance of backwards compatibility.
VentureBeat: If you could be Python king for a day, what would you change?
Galindo: I would be a horrible King for a day. The first order of business would be to fix all these things that we have acquired over the years in the language. That would require breaking a bunch of things. Obviously, I will not do that, but I think one of the things I really would like to see in the future is for Python to become faster than it is. I think Python still has a lot of potential to become faster. I'm thinking this will be impossible. But one can dream.
VentureBeat: What do you know now about Python today that you wish you knew when you first began using it?
Galindo: I think the most important thing I learned is how many different uses there are for Python. It's important to listen to all these sorts of users when considering the evolution of the language. It's quite surprising and quite revealing to consider how changes or improvements will conflict or will interact with other users of the language.
That's something that when I started I didn't even consider. It would be good if people could be empathetic to us changing the language when we have to balance these things.
To celebrate the historical releases file has been updated to include Guido van Rossum's original 0.9.1 beta release from 1991. (Its ReadMe file advises that Python 0.9 "can be used instead of shell, Awk or Perl scripts, to write prototypes of real applications, or as an extension language of large systems, you name it.")
And meanwhile, VentureBeat interviewed Pablo Galindo, one of the five members of the 2021 Python Steering Council and a software engineer at Bloomberg: VentureBeat: What's your current assessment of Python?
Galindo: Python is a very mature language, and it has evolved. It also has a bunch of things that it carries over. Python has some baggage that nowadays feels a bit old, but the community and the ecosystem has to be preserved. It's similar to how C and C++ are evolving right now. When you make changes to the language, it's quite dangerous [because you can] break things. That's what people are scared of the most.
But even though Python is quite old, there are big changes. The Python 3.1 release for this October will include pattern matching, which is one of the biggest syntax changes that Python has seen in a long time. We can learn from other languages. I think we're happy to say that we are still evolving and adapting. We have a good experience with respecting the importance of backwards compatibility.
VentureBeat: If you could be Python king for a day, what would you change?
Galindo: I would be a horrible King for a day. The first order of business would be to fix all these things that we have acquired over the years in the language. That would require breaking a bunch of things. Obviously, I will not do that, but I think one of the things I really would like to see in the future is for Python to become faster than it is. I think Python still has a lot of potential to become faster. I'm thinking this will be impossible. But one can dream.
VentureBeat: What do you know now about Python today that you wish you knew when you first began using it?
Galindo: I think the most important thing I learned is how many different uses there are for Python. It's important to listen to all these sorts of users when considering the evolution of the language. It's quite surprising and quite revealing to consider how changes or improvements will conflict or will interact with other users of the language.
That's something that when I started I didn't even consider. It would be good if people could be empathetic to us changing the language when we have to balance these things.
The first thing they can fix is (Score:1, Troll)
... The stupid reliance on tabs to mark blocks.
Re:The first thing they can fix is (Score:4, Insightful)
Re: (Score:1)
A teeny bit late with that.
Re: (Score:3, Funny)
... The stupid reliance on tabs to mark blocks.
Only crazy people use tabs. You should be using space instead. Programmers who use spaces get paid more.
Re: (Score:2)
Rust has a similar issue, though mainly because cargo fmt replaces your spaces with tabs, and everybody just likes to stick with the default formatter. I work around this by having vscode set the tab width to the same as that of a double-space. Problem solved.
Re: (Score:2)
I know my characters-per-day metric shoots way up when using spaces and my productivity skyrockets which I leverage to get paid more... point well taken. Tab users take note.
Re: The first thing they can fix is (Score:2)
I honestly can't tell if this is a joke or not,
because of the whole "mOaR iZ bEtTuR!!1!" thinking that is prevalent in today's corporate culture.
Does not matter if "more" means crap or not, just that "hIgH nUmBeRz!" means better to simple minds in high places. :\
Re: (Score:2)
Just a joke.
However, I once was part of a govt Independent Verification and Validation team for a software product written by a contractor (LMC) and they rated their programmers on line of code per day. Therefore instead of functionalizing and abstracting code, they produced a lot of copy-n-paste code. I went to a meeting where I photocopied a section of code on transparencies and overlayed 13 pieces of identical code. And then they also leveraged their configuration management code to contain dozens of w
Re: (Score:2)
Both. It's a dig at trying to measure programmer productivity through crude measures like bugs fixed, number of lines coded, or in this case, number of characters typed (though LOC seems more standard as a "productivity metric" than number of charac
Re: (Score:2)
It's strange but true. The most sensible explanation I've heard is that spaces play nicer with source control. Programmers working in environments with a proper source control convention get paid more, but gawd, typing "space, space, space, space" to indent is bloody awful.
This problem really ought to be fixed by having a properly transparent editor to source control pipeline that allows tabs in the editor while checking spaces in to source control. The fact that it generally hasn't been done, and that
Re: (Score:2)
This problem really ought to be fixed by having a properly transparent editor to source control pipeline that allows tabs in the editor while checking spaces into source control.
My editor has been doing that for 25 years.
The fact that it generally hasn't been done ...
It has been done. You may be the only person in the world that manually types each space ... well, you and Richard Hendrick's GF [youtube.com].
Re: (Score:2)
This. Exactly.
Except my editor is even nicer and when I load python code, even in the default configuration, it automatically puts in four spaces directly per PEP8, entering a return puts you at the most likely indent for the next line, with spaces before your cursor and the tab key jumps back and forward between different potential indent levels whilst all the time maintaining all spaces left of the cursor.
There is no reasonable excuse for using tab characters for indenting.
Re: (Score:2)
I don't type 4 spaces. I tab, and I'm "lucky" because I don't have to work with anybody else these days. What editor are you using the does this transparently without a hitch? Please don't say Emacs, LOL.
I think I used a script to deal with this all at one point when working with other devs, but is was klunky--ie, it interacted with svn via the shell rather than me using svn commands directly.
Re: (Score:2)
typing "space, space, space, space" to indent is bloody awful. ... seriously, you do not know that?
You can tell your editor to convert tab into spaces
This problem really ought to be fixed by having a properly transparent editor to source control pipeline that allows tabs in the editor while checking spaces in to source control. The fact that it generally hasn't been done, and that we keep having this discussion decade after decade is, to me, one of the deep mysteries of how humans fail to coordinate on si
Re: (Score:2)
You can tell your editor to convert tab into spaces ... seriously, you do not know that?
Yes. I know that. And then what? My tabs are now spaces, and I'm screwed.
I've been using Riouxsvn and haven't seen anything that would allow me to check tabs in as a 4-space indent (my preferred presentation), and check them back out as tabs. If there's another free svn provider that does this, I'm all ears.
Let's invent "Cython" (Score:2)
Would it be possible to make a Python-like language using C-style conventions? Let's call it "Cython" for reference. If most the libraries can be auto-converted, then much of the wheel doesn't have to be reinvented.
Not everyone will like it, but at least those who don't like Python's white-space dependence will enjoy it. It would be a competitor to JavaScript, more or less.
Re: (Score:2)
Not everybody needs their code to be compatible with PDP-11 though, and some of us don't like the bugs caused by null characters in strings.
Re: (Score:1)
Every language has warts. Maybe add a new set of functions to compliment the existing ones which handle nulls better. Those who want full Python compatibility can use the original operators, and those who want sane null-handling use the newer ones. And/or make it an optional parameter. Using "+" for string concatenation is bad idea, by the way. Maybe introduce a "cat" function: "x=cat(a,b,c,d)", or use a different operator. Dotting?: x=a.cat.b.cat.c.cat.d
Re: (Score:2)
https://video.twimg.com/tweet_... [twimg.com]
Re:Let's invent "Cython" (Score:4, Interesting)
Would it be possible to make a Python-like language using C-style conventions? Let's call it "Cython" for reference. If most the libraries can be auto-converted, then much of the wheel doesn't have to be reinvented.
Not everyone will like it, but at least those who don't like Python's white-space dependence will enjoy it. It would be a competitor to JavaScript, more or less.
Probably simpler to update Python to optionally recognize braces as block delimiters, then nothing else has to be changed ...
Re: (Score:1)
An actual attempt at a constructive suggestion? On Slashdot yet?
But mostly the story makes me feel quite old. I can't accurately count the number of new languages I've studied over the last 30 years, but I've only dabbled. If I had recognized Python as "the future" even 20 years ago, then I could have been "with it" by now. But I had to be perverse about the PERL regexps.
(Actually, it's probably already been about 10 years since I did my most moderately serious dabble with Python... (No, only 5 years ago.)
Re: (Score:1)
Different people are bothered by different things. Our brains and eyes work differently from each other. I've been in long and winding debates with Lisp fans, and their heads are just different from mine. Arguing won't change that. You can't order a brain to work different.
Just accept the fact that some are bothered by Python's indentation technique.
Re: (Score:2)
Funny example. Or a small world thing?
Actually, Lisp was one of my favorite languages. I recently wrote a little piece on Lisp memories from the '80s. https://shanen.medium.com/the-... [medium.com] Later on when I was programming in C, my code came out looking like Lisp with missing parentheses. I still remember one piece that involved two nested routines, where one was recursing from the outside and the other was recursing from the inside. That was more than 20 years ago... All I can remember now is that the data struc
Re: (Score:3)
> I don't get why people are so bent out of space by the spaces
Not sure if stupid or trolling but assuming you are asking a genuine question the problem is NOT space, it is Python's retarded handling of whitespace.
Image if Mathematicians said these two expressions were NOT equivalent?
a = 1+2
a = 1 + 2
You would think this is absolutely insane and you would be correct.
Now apply the same retarded logic to Python. It is common to use multiple columns for code such as using Colu
Re: (Score:1)
No, I am not trolling you, but if a particular language says 2 + 2 <> 2+2, then that's basically fine with me. I wonder what Bertrand Russell would have said, but my basic position on language (including computer languages) is Godelian, not purely mathematical. I'm even willing to stipulate that JavaScript is a "shit language", and even that I'm one of those "Dumb programmers", but do you understand that the existence of one skilled programmer who works effectively in Python seems to disprove your the
Re: (Score:2)
> that the existence of one skilled programmer who works effectively in Python seems to disprove your thesis?
No. Nothing you said refutes my statements. I didn't say: "Only dumb programmers use dumb languages."
You have fallen for the fallacy of duality. One truth does not negate another truth.
1. Dumb Programmers use Dumb Languages. This is true.
2. Smart Programmers use Dumb Languages. This is also true.
Not every programmer who uses Python is dumb. No doubt there are some smart ones. This is true of any
Re: (Score:2)
Re: (Score:1)
Many people like the white-space dependence, it means the code is clean and easy to read. Which is VERY important.
What I would like is a C-like Python langauge, i.e. Python syntax that can be compiled.
Re: Let's invent "Cython" (Score:1)
Cython already exists but it's the opposite of what you are suggesting! :o
Python formatted code that transpiles to c and links to c code
https://cython.org/ [cython.org]
Re: (Score:2)
I think dynamic typing is more evil than tabs.
dynamic-vs-static "battle" (Score:4, Interesting)
In my opinion the dynamic-vs-static difference is more about the domain and usage. Infrastructure and large projects do better with static typing, but smaller and nimble-needing projects do better with dynamic.
The problem is that nobody yet knows how to make a language that can be both based on header/folder switches or what-not to tighten the bottom and loosen the top layers. Thus, we are kind of stuck choosing one or the other in order for lower-level parts to communicate easily with high-level parts.
I'd like to see more experiments in this area. If a language can master "chameleon typing", or perhaps chameleon strict-ness, then we don't have to globally choose anymore. If you pull it off, I'll personally recommend you for a Nobel Prize and/or a Turing Award. (Not that I have any pull, to be honest.)
Re: (Score:2)
All I know is when I use dynamic typing, bugs are more likely to be encountered at runtime. And languages that pretend to be statically typed aren't immune, like Java, where I've had to fix somebody else's code that crash and burned at runtime because they were making liberal use of Object everywhere, only casting it just before they used it (this also made it hell to debug.) Having static types makes debugging a lot less difficult.
Re: (Score:2)
And languages that pretend to be statically typed aren't immune, like Java, where I've had to fix somebody else's code that crash and burned at runtime because they were making liberal use of Object everywhere, only casting it just before they used it (this also made it hell to debug.) Having static types makes debugging a lot less difficult.
This is really more the fault of the programmer than language as it probably didn't have to be done that way. I was a grader for several (under)graduate classes, including programming classes, *way* back in my university days and believe me people can find a way to write dumb/bad/stupid code in any language -- especially when coding in one language, like LISP, using conventions of another language, like FORTRAN (for an actual example).
Re: (Score:1)
Perhaps because you are used to static languages? I get more "null object references" in static languages than in dynamic ones, so perhaps it's a trade-off.
Re: dynamic-vs-static "battle" (Score:2)
There is no such thing as null in Rust. The closest to it is Option, which the compiler forces you to acknowledge before you can do anything with it.
Re: (Score:1)
Rust has "none", which is another name for Null. It just forces one to supply a default if null for each context of usage, if I'm not mistaken.
Re: (Score:2)
Only a really bad programmer forgets what it put where.
Re:The first thing they can fix is (Score:4, Funny)
... The stupid reliance on tabs to mark blocks.
Hey... you may have found an interesting issue. There might just be some people out there who don't like the indented syntax.
The Python team might not have been given this feedback yet. Maybe you ought to file a feature request with them so that the Python maintainers can be in the loop on this.
Re: (Score:1)
While you're at it, it might be good to remind the PHP devs that their language is garbage. I don't think they hear that very often.
Re: (Score:2)
Surely somebody has written a preparser to let you write with visible braces and let the machine feed in the invisible spaces to the parser?
Re: (Score:3)
You are rightfully marked as troll.
But actually you are a stupid double troll.
In Python you use SPACES and not tabs.
Because the compiler does not know what your tab width is.
Hint: program one hour in Python. If you hate anything in it, it will be its dynamic types. And certainly not the indentation: you would indent your code exactly the same way anyway, so why complain about it? It is just stupid.
Re: (Score:2)
Why do you hate makefiles?
Pattern matching (Score:2)
I'm not going to say pattern matching is useless, but I sure don't see a reason for it.
Re: (Score:3, Interesting)
I suspect it's me-too-ism, as other languages are adding it to be more "functional". For example, C# added pattern matching, but it's partly because C had a shitty switch/case construct. But they could have copied VB's switch/case, which is much cleaner than C's. Seems they stole the wrong fix due to fad pressure.
Re: (Score:2)
How else are you supposed to get a jump table?
Re: (Score:3)
How else are you supposed to get a jump table?
My parents told me to never jump on the furniture.
Re: (Score:1)
After you smashed your head in, that was good advice.
Re: (Score:1)
I don't know how VB did it, they just did. Maybe it's less efficient, but a high-level language should generally put good design over speed.
Re: Pattern matching (Score:3)
In my experience, the only language that puts design and good coding practices above all else is a lower level language, and it's called Rust.
Re: (Score:2)
That's in the eye of the beholder.
Re: Pattern matching (Score:2)
Well, in practice, generally if my Rust code compiles, it works. It's actually a little jarring because I'm used to having this or that not work right, and I swear there must be something that I'm missing, but no. It just works. And I don't really consider myself to be a software developer as I've never had any formal training in it, nor is it in my job description, so I probably make more mistakes than somebody who is dedicated to it, but that's what makes Rust work out so well for me (that, and it's FAST.
Re: (Score:2)
ok, I'll check that out when I get around to evaluating Rust in depth. But I have to say your experience sounds like every experience with a compile-time type-checked language. I still test my code because sometimes I accidentally type < when I meant > but I assume I'll still have to test those cases with Rust.
Re: Pattern matching (Score:2)
An example there - if you were say comparing two floating point numbers with =, , rustc will complain if you don't account for epsilon. It's really a mean but benevolent dictator. Rust also has clippy, which isn't as mean, but is just as annoyingly perfectionist as it's namesake.
Re: Pattern matching (Score:2)
Damn slashdot ate my comparison operators
So was 3.0 the biggest ever language disaster ? (Score:2)
3.0 breaking compatibility with 2.0 and the slow porting of libraries to 3.0 meaning 2.0 was essential was surely the biggest ever programming language disaster ?
Okay, maybe PHP and Visual Basic were worse.
Re: (Score:2)
Re: (Score:1)
Parent writes "None of them were disasters".
Defends one of them. A bit.
Hmmm.
Re: (Score:3)
You must be too young to remember...
PHP won because it was better than the alternatives. Perl users flocked to it -- because it wasn't Perl! JSP, ASP, and ColdFusion (ugh) were the other major competitors in the early 2000's. PHP is still on top because ... it's still better than the alternatives in many ways.
VB was fantastic for the time. It was incredibly easy to use, and well-suited to a wide variety of common business applications. You forget that many developers were still targeting MS DOS in th
Re: (Score:2)
It's pretty rough once you do something more complicated than a magazine type-in.
At the company where I work, I was the programmer on a set of python-based scripts that were used to perform major production system software upgrades. These upgrades were done on live systems with easily half a million customers connected. The software was very complex and had lots of moving parts. The python scripts handled it all like a champ. Every time I was called at 2 AM in the morning due to some failure (and that was RARE), it was not the fault of the upgrade scripts. If anything, they detected the
Re: (Score:2)
Okay? I'm not sure what the point of that story was?
People have written large, complex, and reliable systems in countless languages, good and bad. Yes, even in Slashdot's most hated languages. Such a fact alone doesn't tell us anything about the language itself, of course.
I saw a video once about a fellow who made a functional Atari 2600 emulator out of blocks in Minecraft. The point of that, somewhat obviously, was to do something interesting in a needlessly difficult way using a wildly inappropriate
White space is dumb (Score:1)
Change my mind.
Re: (Score:2)
Don't you mean:
WhitespaceisdumbChangemymind.?
Re: (Score:2)
The Romans [wikipedia.org] have entered the room.
Re: (Score:2)
No need. Python jobs are just not for you. There are enough other things you can do.
Started using Python because it Wasn't C! (Score:3)
20 years ago I was a pure R&D engineer, shoving physicist's "Proof of Concept" lab experiments into an "Alpha Demo" box to be handed over to a product development team. I was under pressure to rapidly provide a bridge between the lab and "something in a box", so management could made the big commitment to a new product. I wrote code extremely quickly, without regard to architecture, maintainability or even reliability: It just had to produce useful results most of the time, to concretely show what was possible.
My code was intended to be used only as a "lessons learned" document for the product team to examine and "retire" for use as part of the test suite, never to be integrated into the product. But then, of course, my horrible code started showing up in products. Why? Because the product team was under strict time-to-market pressures, and didn't want to rewrite code that worked. Meaning the software team was incurring unexpected reliability and software maintenance costs, a large chunk of which were due to my crap code.
So about 16 years ago I switched to Python + Psyco, which allowed me to more rapidly craft functional prototypes that were also "performant enough". Which the product team was unable to directly reuse. Problem solved.
That also marked the beginning of my declining use of C and C++ (despite being on a language committee). Python let me write complex experimental embedded/real-time code with much less effort, and with much higher quality and reliability. Of course I still use C and C++ at the lowest levels, such as for a device driver, but more generally to craft a library to be called from Python.
The second thing they can fix is (Score:2)
With a language that relies on tab separations and in an era of large widescreen IDEs this has to be one of the most restrictive and pointless shoot-in-foot decisions in modern computer language specification that I can think of.
To put it into perspective: it's even less than a Hollerith/IBM punched card from 1928.
Re: (Score:2)
That's just a strong recommendation.
I write most of my code in Python and our own internal style guide is based on the Google one which is based on PEP-8, but we have one significant difference: 100 characters. More is too much as it encourages folks to indent more, and TBH reduces readability. There is a reason newspapers are printed in columns and not across the entire page. Eyes are terrible at tracking horizontally, especially when going from the end on the right back to the left.
When doing side by side
Re: (Score:3)
I have no trouble looking at diffs of wide lines so I suppose it's all relative, but it's the extra need to scroll up and down that is such a time-waster.
Apparently the rationale for the small limit is for 'backward compatibility to older displays' which seems quaint given that this language is considered modern.
Even the DECwriter and Teletype 43 printing terminals I used for Comp Sci at university thirty-fiv
Re: (Score:2)
"Most regular people (me included) have trouble with very long lines"
Oh the irony.
Re: (Score:2)
I base my 100 character rule on actual studies, not just my own empirical experience:
https://www.researchgate.net/p... [researchgate.net]
http://webtypography.net/2.1.2 [webtypography.net]
> Anything from 45 to 75 characters is widely regarded as a satisfactory length of line for a single-column page set in a serifed text face in a text size. The 66-character line (counting both letters and spaces) is widely regarded as ideal.
I assume that the bulk of lines of code is going to be inside a logical block of a class method. This means that we are
Re: (Score:2)
250 characters? Yes that's insane, but you've just pulled a figure out of the air on this one.
I myself said nothing of the sort, just that the excuse of maintaining retro compatibility with old displays isn't a compelling argument. I could live with 100 characters you use, in fact I'd be just completely fine with it.
In my 40+ yea
What we should regret (Score:2)
What we should regret is Netscape suddenly deciding to insist on a client-side scripting language that used Java's syntax and name, and hiring one person to write it very quicky, so they could cash in on the hype around Java. This kiboshed attempts to get Python 0.9 (and Lua) working as the client-side scriping language in their browser.
For the Trolls:
Python was influenced by ABC which used indentation. And indentation obviously works fine looking at the number of people using Python.
Python doesn't have 100
Can I have my tax money back? (Score:1)
Some government employee made Python with Dutch tax money.
We the Dutch people haven't benefitted much from all the Python glory, every government IT system is 5x over the budget, 7 years too late.