10 Tools and software
There’s no single right answer. The choice depends on your discipline, on the computational speed you need, and, importantly, on what you already know.
At every university I’ve worked at there is always this debate on what data software to teach our students: Excel, R, Python… the debate goes around, and I think I’ve seen all the arguments now. It’s irresolvable because each is good in its own way (even Excel, but only when you have to work with people who don’t know anything else and there’s no time to educate them!).
Your own familiarity is a real constraint: the time a project takes depends heavily on the languages and tools you’re already fluent in, and you can’t easily push your model and learn a new language at the same time (though leaning on AI to help with unfamiliar code softens this).
In broad strokes:
- R: the statistical workhorse, with an enormous ecosystem of packages. Convenient and expressive, but can be slow for heavy loops and large simulations.
- Python: a good general-purpose middle ground, increasingly the default in machine learning and scientific computing. Its scientific stack (NumPy, SciPy, pandas) pushes the heavy numerical work down into fast compiled libraries, and tools like
numbaorCythonlet you speed up bottlenecks without leaving the language. It’s also the easiest on-ramp to AI and deep-learning frameworks if your work heads that way. Like R, plain Python loops are slow, so the skill is in vectorising and letting the fast libraries do the work. - C++: much faster for computation, at the cost of being lower-level and more effort to write. Reach for it when a simulation’s inner loop really dominates your runtime.
- Interfaces and connectors: in practice people often bridge these, writing the ergonomic parts in a high-level language and pushing the heavy numerical work down to a fast one. R and Python both call C++ readily (via
Rcppandpybind11/Cythonrespectively) and can call each other. So you could develop the function for your dynamic model in C++, but then run it and do all the plotting in R.
Pick the combination that fits your problem and your existing skills, and don’t reach for the fastest tool if a slower, more familiar one will get you to a working model sooner.