Great to see Java is still #1 Hah!
It's installed on virtually everything already. It's one of the easiest languages to learn (the basics), and is used as a teaching language. Even outside of CS everyone knows it.
Used in web programming (Django, Flask, etc.), numerical computing (Jupyter, numpy, scipy, pandas), AI/ML (TensorFlow, scikit-learn), bioinformatics, easy bindings to EVERYTHING (openCV, bullet physics, kafka, zookeeper, protobuf, json, xml).
It's usually concise enough, mostly straightforward to read, reasonably structured (though big codebases can become a pain). In most companies you see python used in tooling ALL THE TIME. It's fantastic for ducktape programming; often 'promoting' a largeish bash script to python. It ate perl's place there before.
I've even seen ipython work well as a login shell. Jeezz.
Sure the 2.7 -> 3 thing was a ton of drama, the package manager situation changes ever few years, but hey: a lesser language and ecosystem would have fallen apart under it.
Disclaimer: I'm a Java+Python fan boy in all their incarnations.
Yet not mention of jython :)
For data science and machine learning, it makes sense because the most popular packages are all in Python at this moment (strictly speaking, they have interfaces in Python but the underlying native code is in C++).
For academics who do data analysis and scientific computing, the last few years have seen an explosion of scientific packages available in Python. The major packages, NumPy/SciPy/matplotlib/pandas, also become more feature-complete to the point that one can do everything that is used to be done in MATLAB now in this set of packages. That's free MATLAB with better performance and more potential for optimization. No wonder people are switching to the Python ecosystem.
And Python is becoming the first choice for the Machine Learning and even Data Science.
Is that really the case? I mean I adopted Python and Flask for web work quite awhile ago, but I still see a lot more Ruby web devs around here than anything else.
Data analysis 52% Web development 45%
And most popular libraries :
NumPy / matplotlib / SciPy / Pandas and similar 47% Django 45%
It's a virtuous/vicious circle, depending on what you think of Python. But I think "Python is for ML" is the unofficial motivation behind a lot of it, because if you're starting to build your career and Python is an option then for sure you're going to mess around with scikit-learn and put that on your CV.
[edit]: Oh and boto3 probably accounts for a fair amount of Python use these days. I actually prefer the AWS support in golang but boto3 usually "just works" despite some very weird quirks.
* The outstanding documentation site.
* Execution speed for an interpreted language.
* Highly transparent language evolution, managed by the nonprofit Python Foundation.
* Semantic versioning.
* Core developer communication is in English.
* Excellent module definition and import system.
* Culture of explicitness, not implicitness.
The ecosystem has a few huge weaknesses (e.g. packaging and dependency management) which put me off for the most part. But the strengths seem to be overwhelming enough to put Python on a success trajectory.
Just curious, is there any popular programming language whose core developers communicate in a language other than English?
The amount of crazy stuff he teaches with python is amazing. No other language can promise that calibre of idea expressing power coupled with ease of development.
I'm personally not a big fan of Python at all (actually I hate it), but one can't deny its overwhelming dominance in those spaces.
I feel that it's only just starting to grow, and will continue to get bigger.