I heard a saying at work: "Python is the second best language for anything." Scientific computing is a perfect example. By being close to the best, Python ends up taking over each sub-section of the SC world.
If python is good enough to replace R or Matlab for you, then you are using a negligible fraction of what those platforms have to offer.<p>R is a lot like vim or javascript. It has a lot of warts, but it's an incredibly expressive toolkit for its task. I usually buy into a language once I find a few extremely gifted developers working with it (and who seem to do so voluntarily). For instance: for vim it's Tim Pope, for R, it's Hadley Wickham, for javascript it's Mike Bostock.<p>Python, despite its many good decisions, is likewise full of warts.
So, who are good developers to follow in the python/numpy community?
That's how idiomatic one-way-to-do-it generic languages slowly win. They raise the bar for the specialty languages so that, for example, after R the next statistical language really, really needs to shine in what it does in order to justify the trouble of learning another language over using a Python with a statistics library.
Previous discussions of the same article:<p><a href="https://news.ycombinator.com/item?id=7030097" rel="nofollow">https://news.ycombinator.com/item?id=7030097</a><p><a href="https://news.ycombinator.com/item?id=6756430" rel="nofollow">https://news.ycombinator.com/item?id=6756430</a>
I'm seeing this phenomenon in my own work. I do a fair amount of computational stuff (in the old sense of <i>computing something</i>, as opposed to just using a computer), and I find myself gravitating more & more to Python.<p>Performance is, of course, an issue. But in one case I noted that the week or so it took me to write <i>and execute</i> some Python code was almost certainly less time than it would have taken just to write the code in C/C++. I concluded that -- for this problem at least -- the extra performance I might have gotten out of C++ simply did not matter.<p>However, these days I do not do much with large scientific models or anything resembling big data. Performance is not the issue for me that it would be for others. And with articles having titles like "Why Python is Slow: Looking under the Hood"[1] out there, I find it difficult to see how Python can displace Fortran (or maybe C) in the realm of traditional supercomputing.<p>[1] <a href="https://jakevdp.github.io/blog/2014/05/09/why-python-is-slow/" rel="nofollow">https://jakevdp.github.io/blog/2014/05/09/why-python-is-slow...</a>
I think the author really needs to define scientific computing. Some people would think of that as simulations, clusters, astronomy, epidemiology and fluid dynamics. That maybe typified by a scripting language wrapper(inc Python) to C, C++ or even Fortran programs.<p>He himself seems to be talking more about standard stats and data analysis or prediction. In this field R is growing at least as fast as Python. R is the no1 Kaggle language and the no1 academic stats language, Python 2nd and stable there. The software carpentry movement to train scientitsts concentrates on both R and Python.<p>Then the biggest scientific programming field is bioinformatics - which really is a mish mash of Python, Perl, Java, C++ whatever piped CLI and a lot of R again. Here Python is growing mostly at the expense of Perl (there is a big Perl legacy) but as most software is designed for piping together in Bash scripts the diversity is not too big a deal.
My own perusal of Job adverts on this area sees employers asking for "R Perl or Python" which are viewed as interchangeable.
The easy objection is that none of what he's doing actually depends on Python; those libraries could have been as easily linked to Javascript, Ruby, Lua, Clojure, etc, the critical point: NumPy does not really take advantage of any specific feature of <i>Python</i> other than its popularity. Python isn't really taking over when most of the actual code that runs was written in C, but it's the best glue right now.<p>But really, just this second part is the point. Why wasn't this post written five years ago, when Python had already become a popular and established language? Well, if you look at it a little differently, it took roughly five years from the time Python took over undergrad CS courses to the time it became the lingua franca of scientific computing -- see a connection?
This is a partial example of worse-is-better. No one wants to have 10 languages in their toolbelt.<p>I personally find I use C# for almost everything. You can find good libraries for virtually everything you need. And it has the best tooling I've found. Is it actually the best language for everything? Absolutely not, but its close enough that I'm probably the most productive in virtually everything with it.
I wonder what it'll take for JavaScript to start taking over Python's niches. Is there a numeric library (like Scipy/pandas) hooked up to asm.js yet? I can imagine that being faster than Python.