|
From my experience, python won out the research crowd exactly for the reasons you mentioned, but also because it is a bit of a swiss army knife platform. Python has plenty of libraries for doing pretty much anything these days. Computer Vision? Can do. ML? Can do. Dashboards? Can do. And the list goes on. This means that a researcher can do their research in python and then also do the implementation in the same language and platform they are familiar with. If someone told me to use rust for doing any sort of interactive/iterative numerical research, I'd send them for the hills. And I love Rust. But when I want to quickly learn about the properties of some data, or try to use dataset A to predict dataset B, I don't give a rats ass about types, or type safety, or proper programming idioms. I just want to look at my data. Then, if I convince myself that I have some sort of model that I want to use, I could theoretically reach for Rust, but generally I don't need to. I can just take the output of the research - more or less verbatim - and start using it in production. Often with minimal changes. Yes, sometimes circumstances require to use something more performant, but these days you also have Numba or Nuitka to optimize some hot loops. For the longest time I wanted Julia to become a success, because I felt that it combined in one language and platform the possibility to write easy no-fuss, scalable, performant and robust code. A language which could evolve a codebase from initial research analysis to strongly typed production code. Unfortunately it never seems to have gained traction, so we are left with the next best thing: python. It's not really good at anything (as a language), but it's the least bad out of everything out there and the libraries are excellent. |