[Math] What programming languages are used in (chaotic) dynamical systems and nonlinear phenomena research

career-developmentdynamical systemsmath-softwaresoft-question

I'm currently considering pursuing postgraduate studies in the field of chaos/dynamical systems/nonlinear phenomena, and was wondering whether there are particular programming languages that are favoured when doing such research. Are there any that stand out in particular that would come in handy? C, C++, Python, Haskell?

I have taken one-term courses in Java and MatLab programming, so I know the basics of programming, but I haven't really programmed much or at all outside of the courses themselves. So I figured it might be useful if I also picked up a language that I'd actually use in grad school, prior to actually getting there and having to learn it on the fly.

Best Answer

I don't know if there any special "favored" languages in this area, but I suspect that the answer is "no". In any given discipline, you will typically find people using an assortment of different programming languages to explore ideas. In many cases, people choose a particular language just because it's one they already know, not because it's especially well suited to the problems at hand. As the old saying goes -- "when your only tool is a hammer, every problem looks like a nail" :-)

If you're going to learn a new language, here are a few criteria to consider:

(1) Pick one that's "mainstream", rather than some special niche language. So, pick C++, or C#, or Java, or Matlab. Maybe Mathematica. Maybe Python. Not Haskell. That way, the knowledge you gain will be more broadly applicable. It might help you get a job, at some point, for example.

(2) Pick one that is well suited to your problem domain, to make your life easier. So, for dynamical systems, I would expect that Matlab and Mathematica would be good. Python would be good, too, because you have access to the NumPy package. C++, Java, and C# might involve more work, depending on what helpful libraries you can find (there are many, but their quality varies greatly).

(3) Personally, the only reason I ever use C/C++ is when I want my code to run as fast as it possibly can. Unless performance is the main concern, C/C++ are just too much trouble, IMO.

The criteria are conflicting, of course, and only you can decide which ones are important to you.

Related Question