Python Displaces C++ In TIOBE Index Top 3 (infoworld.com)
InfoWorld described the move as a "breakthrough":
As expected, Python has climbed into the Top 3 of the Tiobe index of language popularity, achieving that milestone for the first time ever in the September 2018 edition of the index. With a rating of 7.653 percent, Python placed third behind first-place Java, which had a rating of 17.436 percent, and second-place C, rated at 15.447. Python displaced C++, which finished third last month and took fourth place this month, with a rating of 7.394 percent...
Python also has been scoring high in two other language rankings:
- The PyPL Popularity of Programming Language index, where it ranked No. 1 this month, as it has done before, and has had the most growth in the past five years.
- The RedMonk Programming Language Rankings, where Python again placed third.
Tiobe notes that Python's arrival in the top 3 "really took a long time," since it first entered their chart at the beginning of the 1990s. But today, "It is already the first choice at universities (for all kinds of subjects for which programming is demanded) and is now also conquering the industrial world." In February Tiobe also added a new programming language to their index: SQL. (Since "SQL appears to be Turing complete.")
"Other interesting moves this month are: Rust jumps from #36 to #31, Groovy from #44 to #34 and Julia from #50 to #39."
Python also has been scoring high in two other language rankings:
- The PyPL Popularity of Programming Language index, where it ranked No. 1 this month, as it has done before, and has had the most growth in the past five years.
- The RedMonk Programming Language Rankings, where Python again placed third.
Tiobe notes that Python's arrival in the top 3 "really took a long time," since it first entered their chart at the beginning of the 1990s. But today, "It is already the first choice at universities (for all kinds of subjects for which programming is demanded) and is now also conquering the industrial world." In February Tiobe also added a new programming language to their index: SQL. (Since "SQL appears to be Turing complete.")
"Other interesting moves this month are: Rust jumps from #36 to #31, Groovy from #44 to #34 and Julia from #50 to #39."
... but if they hadn't handled the Python 2/3 fork so clumsily, this might have happened years ago.
Real code warriors don't need static types. If a variable is so badly named that the type is not clear, use type().
Laws are rules for the court, but merely a bottom bar to hit for life. Think beyond laws in your actions always.
french toast, m'ladies
So... C, the language the python interpreter is written in then?
I'm still on the lookout for all those C++ compilers written in python.
Or any of the games in my library, which all appear to be C or C++, with a few C#.
Python is great... for toy programs.
Back in '97 my university switched wholesale from pascal* and C** to java for a first introductory course in programming. They were fairly cavalier about it. "Oh yeah the other guys using the same educational material had an introductory course about object oriented programming that you're just gonna have to do without, here's a one lesson replacement introduction."
This sort of bandwagoneering, trading "popular" languages for educational content is why universities, that university included, fail to produce world-class graduates. That and just plain sloppy teaching. But that tends to go hand in hand for some reason.
* I did a lot of Turbo Pascal on dos. It's by no means perfect, but it's certainly not a bad introductory language.
** Grok pointers or else. It's a skill you'd expect university-educated programmers to have. I used to expect that, at least. Once.
Whatever the list, if Java is in the first place, there is no honor in being anywhere near the top.
In Soviet Washington the swamp drains you.
Never mind Python 2 vs 3; one major reason I shy away from Python is the incompatibility in point releases. I'd see "requires Python 2.6â and see that I have Python 2.7 so it should be fine, right? Nope, code written for 2.6 won't run under Python 2.7. It needs to be EXACTLY 2.6.
It's at this point that some Python fanboi gets really upset and starts screaming about how that's now problem, with Python you set up separate virtual environments for each script, so that each one can have exactly the version of Python it is written for, with exactly the version of each library. When there is some bug or security issue you then hope that there is a patch for each, and deal with all that. (As opposed to every other peice of software in the world, which you simply upgrade to the latest version to get all the latest fixes). Yes, you CAN deal with that problem, it's possible, in most cases. You shouldn't have to. Every other language does some simple things to maintain backward compatibility in point releases (and mostly in major releases too).
Also the fact that most languages use every day and have used for decades use braces for blocks means my eyes and mind are very much trained for that. Braces aren't necessarily BETTER than just using indentation, but it's kinda like building a car which uses the pedals to steer and a hand stick for the gas. It's not necessarily inherently better or worse, but it would be almost undriveable for an experienced driver with decades of muscle memory in normal cars. Python's seemingly random choices on these things make it feel like using your feet to steer a car. There should be compelling reasons before you break long-established conventions and Python seems to prefer to break conventions just to be different. It seems the Python team is a bit like Berstein in that way. It's really annoying.
Tiobe notes that Python's arrival in the top 3 "really took a long time," since it first entered their chart at the beginning of the 1990s. But today, "It is already the first choice at universities (for all kinds of subjects for which programming is demanded)
Undergraduate was all C/C++ for me then I ended up at a graduate school where everything was Java. I disliked it so much that I decided to find an alternative and teach myself. I found Python and loved it. I still love it. You can't find anything better for both heavy duty programming and quick and dirty scripting. It's versatility makes It like the Linux of programming languages.
Is there a programming language out there, that is as fast as C++ or even C, has a proper strict type system (no duck typing, nothing like Python or JS), fast garbage collection (no fuckin' auto_pointer worst-of-both-worlds), is elegant and emergent (so very powerful for its simplicity), and doesn't require an advanced degree in computer sciences to do simple things (Hello Haskell!). ... *keeps on dreaming* :--(
Of course with key libraries being available for it. (The equivalent of a standard library, Vulcan, a simple GUI widget toolkit, SDL, the POSIX API or equivalents, and easy usage of networks or sockets.)
IDE support would be nice, but isn't strictly necessary.
Also, it should not be made by mentally insane or criminally evil elements. (So no Mozilla, Apple, Google, Microsoft, Oracle, Amazon, Gnome, Canonical, or anyone using "web applications" or "the cloud" or a "app store" or is otherwise a data kraken or against privacy, and the likes. People who are not interested in "profit" or "growth", but in improving humanity, are of course preferred.)
That advocated a language. Languages shift faster than sand on speed. Universities should teach logic, reasoning, methodology, good practices and programming technique.
Languages should be for the purpose of example only. Universities should teach programming, not Java, software engineering, not Python. Java and Python should be in there, yes, along with Perl, C and Ada. Syntax is just sugar over the semantics. Learn the semantics well and the syntax is irrelevant. You want universities to teach kids how to program not only tomorrow but in 40 years. Trust me, Python 3 won't be used in 40 years.
This stupidity has happened before, when Cobol and Fortran were the in thing. Last forever, they thought. Nothing will replace them. Most programmers of that generation either spent a fortune relearning, because they'd learned syntax and not programming or retired, broke and penniless with a huge mortgage and no value.
It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
I find java in an uncanny valley. Its still a few times slower than c++ for the sort of stuff I do but it isn't enough quicker to develop than c++ to be worth that hit. Python is far slower than java even using numpy but its so easy to develop in that it is worth the gamble that it will be fast enough. And the rewrite in c++ will go quickly even if it isn't. The title is because VBA is 11x faster than numpy at small dense matricies and almost as easy to develop in.
refactor the law, its bloated, confusing and unmaintainable.
That's a pretty big jump. Groovy is a well-thought-out language and nicely facilitates writing clean, readable, compact code (especially compared to Java). However, it needs a better framework than Grails (85% really good convention over configuration stuff but 15% convoluted j2ee era framework stuff).
dna.js
It's my goto heavy hitter when shell scripts can't cut it. I have little need for anything lower level than python.
Is that 2.8 or 3.x? Because they're two different incompatible languages. And who's to say Python 4 won't also break everything again?
It's a broken model to have a language committee that does not respond to feedback from the community or industry.
Python 2.7. It needs to be EXACTLY 2.6
Yeah, just FYI Python 2.7 is in a way its own thing. Different from the 2.x and different from the 3.x series. 2.6 is a no holds barred pure 2.x whereas 2.7 is a mixture of 2.x and 3.x features. So if you want to compare point releases, best to try that with the 3.x series. Also, if you're using something that requires the 2.x series, you shouldn't use that unless it is absolutely critical with zero replacements.
You shouldn't have to. Every other language does some simple things to maintain backward compatibility in point releases (and mostly in major releases too).
Again see argument about 3.x, but yeah not every language does this. Java 8/9 transition breaks things. ASP.Net to ASP.Net core breaks things along the way. I'm interested in what languages you have in mind, because I know quite a few languages that do maintain backwards compatibility (ish). For example, C++ pre and post namespace breaks fstreams in programs, but compilers provide flags to override that, so it depends on what you mean by breaking. Does it count if the compiler by default breaks, but providing flags fixes it? Because if your definition means including flags break compatibility, then oooh boy are there a a shit ton of broken languages.
Also the fact that most languages use every day and have used for decades use braces for blocks means my eyes and mind are very much trained for that
Yeah, it's clear that you've never used a positional programming language. I guess it'll be a sign of my age, but buddy, program COBOL or RPG on punch cards and let me know about that curly brace issue you're having. Positional and indentation has been used way, way, way, longer than curly braces. That's not me knocking on the curly braces, I love my C/C++ folks out there! But I hate to tell you C and C-style is pretty recent in the timeline of all things computer.
Not sure that's a good thing.
Table-ized A.I.
I really like the Qt framework. It's well done, well documented and well supported. Sure it's C++ so it doesn't meet your need of finding a new language but the API is pretty clean and simple so that you can avoid the complications and ugliness of C++ in most cases. If you need to though, it's all right there so you don't give up the additional power if you need it. The Python version is good too and very similar to the C++ version so it's not hard to switch between languages as your needs change.
> C++ pre and post namespace breaks fstreams in programs, but compilers provide flags to override that, so it depends on what you mean by breaking. Does it count if the compiler by default breaks, but providing flags fixes it?
If it results in weird runtime errors, that's definitely a problem.
If the compiler I'm using gives the message "incompatible use of fstream, try '-fstreamcompat' flag", that's no big deal.
Can someone explain to me why using a dynamically typed language is a good idea for "big" applications ?
Python is subject to all sorts of really horrendous bugs that would not happen in a compiled, type-checked language.
For example if you are accessing an undefined variable in the else branch of an if statement, you won't know it's undefined unless that branch is taken. which means if it's something like a rarely occurring error condition it's kind of annoying. yes you can figure it out by writing enough test code, but really.
I love Python, but i think using for multi-thousand line application seems like a bad idea.
Is there something I'm missing here ?
enlighten me...
Absolute statements are never true
I was just working on learning Python this afternoon - starting in on writing a very simple molecular dynamics simulation and visualization - since understanding the Second Law of Thermodynamics is a (pleasantly futile) little hobby of mine.
I've got a good job writing clinical genomics software in Java. But there's more micromanaging and negativity at my current job than I would like. So I'm also on the job hunt - for a programming job somewhere in California relating to clinical genomics - where people genuinely believe in the work - but not so much that they lose sight of the fact that it's even more important to treat each other well.
And, these days, the most popular languages in clinical genomics seem to be Python and R. Personally, I'm a bit skeptical that Python has the necessary package/module system to support a clean architecture for large (hundreds of thousands of lines) enterprise grade software. But I don't want to look like an old guy with out-of-date skills (I got my start programming Scheme at MIT). So I figure I need to be able to put Python on my resume. :)
So far (just a few hours in), I'm kind of meh about Python. It doesn't seem terrible but it's not a revelation either - a lot like Perl but with a cleaner object system.
That must be an odd package. I have literally NEVER seen that with anything I have wanted to use, including my own pre-2.7.x software.
Measures by how many idiots have stupid questions on stackovershit?
On a similar note, if something is marked deprecated long before it's removed, that matters. Five years of compiler/interpreter warnings saying "deprecated use of function in null context on line #47" gives plenty of opportunity. To fix it. From the bit of Python I've worked with, the recommended method on Friday completely stops working on Monday.
Worked on two large projects where key performance requirements could not be met thanks to c++'s massive overhead.
Add to that overly clever programmers trying to overload everything in sight.
Good riddance I say.
My professional programming days are long gone, but I've used python for some little hacks. Pleasantly surprised how easy it was to pick up.
Of course it helped that the indentation style matched my own preferences.
I think what has really propelled Python into a higher rank is machine learning, where it is simply the de-facto language of choice by quite a margin.
I have to admit I am impressed with the progress it has made; of many recent CS grads I've talked to it seemed to be the favorite language...
I have to admit that over the years I've not really enjoyed Python much myself in the on and off again times I've used it, for me the spaces as indent levels maybe get too close to the meaningful whitespace of Fortran... I guess modern programmers do not have this hangup. :-)
So good work Python, a well deserved ascent!
"There is more worth loving than we have strength to love." - Brian Jay Stanley
yeah all those womyn coders. amirite or amirite.
For example, C++ pre and post namespace breaks fstreams in programs, but compilers provide flags to override that
Dude, that was in 1990, back before there even was a standard C++. And I very much doubt those flags still exist today.
program COBOL or RPG on punch cards and let me know about that curly brace issue you're having
You seem to have forgotten how that really worked in your old age though. Punch cards had columns with specific functions assigned to them, so yes, of course you would have to skip certain columns on occasion. That was not indentation, though. You didn't have indentation; moving your holes by one position or one column meant the machine would interpret your instruction as something else entirely.
I have been sporadically using Python for some years already and never really liked it. Note that most of my experience is focused on C-based and strongly-typed programming languages. Recently, I have been spending some time on a Python project and have realised about its (newbie) friendliness.
I still don't quite understand the reason for all the tabs/spaces problems, consider it too slow, don't like the systematic need of relying on external resources and I will certainly continue using other languages before it. But I do understand now why newbies or those performing relatively small developments or those wanting to rely on some of the associated resources (although I don't like being systematically forced to include external dependencies, I do recognise that Python deals with these aspects quite gracefully and that there are many interesting libraries) might prefer Python. It is one of the most intuitive programming languages which I have ever used, at least from what seems a newcomer perspective (e.g., same command performing what are intuitively seen as similar actions).
Custom Solvers 2.0 = Alvaro Carballo Garcia = varocarbas.
Python is great for prototyping, but for me, I found that in production code C++, C# or another statically typed language was better.
I don't think this should be about lines of code written. A more interesting approach would be to also count all dependencies, counting things like libc a gazillion times. Even more interesting would be to count what's actually executed.
0x or or snor perron?!
Not typesafe, and no switch/case ... what ever rocks your boat.
That's great that they deprecate something on some occasions.
MY experience with the Python I run is that one version gives no warning, going up one point release throws multiple fatal errors.
> This is readily obvious when you look at the changelogs
Maybe that's the thing - one has read the changelogs to see what is deprecated, as opposed to getting a clear deprecation warning from the interpreter/compiler like you would with C, Perl, and other languages?
It's possible that a Python expert might be able to tell me something like:
If you want to be warned about deprecations, while setting up thr virtual environment for that script you have to set the shell environment variable PYTHON_DONT_BE_SHITTY
or whatever.
Following the basic HOW-TO on Python.org, they run clean under 2.x and die with fatal errors on 2.y. If I studied the changelogs enough I might be able to maintain these scripts, but that leaves a terrible first impression so I don't WANT to deal with this *;"+_!" language. I learn new languages and figure out things like that if the language seems like it's going to make my life easier and be worth it. Python appears to be a major pain in the ass for no good reason in several ways, so I'm not seeing that it's something I want to learn. Not more than enough basics that I can do some simple maintainence when I have to.
> And I have never, ever seen a deprecation warning in C or C++. You have to read the change sections for new standards to see what was deprecated or removed.
The default with gcc is to warn about deprecation. .bashrc oe wherever. What's most often recommended is -Wall to show all warnings of all types.
You can turn the warnings off by setting the CFLAGS environment variable to include -Wno-deprecated, which you can do in your