she wants to use her maths/physics knowledge towards creating industrial/scientific applications.
The functional programmer in me is really happy that so many people are saying "Haskell!" but based on my own experience in applied physics, it's a terrible idea.
Programming in the sciences is all about numerics. That means giant fiddly matrix manipulation libraries, adaptive conditioning, stability bounding, and adjustments for the phase of the moon.
There's a pretty simple reason for all the gobbledygook. Often, the entire solution to a given problem is expressed as one giant matrix equation (i.e. y = Ax), because that's an easy format for a big computer to chew on. The trouble is, there are lots of possible ways such computations can return a result that looks right but is actually completely buggered. Finite precision floating-point numbers is one, but there are others. And since inverting one giant matrix is pretty much the only thing* that happens in a computation, you don't have a lot of debugging options when something goes wrong. So boutique languages like Haskell won't be all that useful except for prototyping because nobody else will trust the numbers you produce.
There really aren't that many mainstream choices. Matlab is the all-singing, all-dancing prototyping tool that you must know if you want to have any dealings with scientists. Matlab can compile its code to C or Fortran (I'm pretty sure, anyway), which are your two other choices.
Good points, but OCaml probably has enough credibility to get away with it. Haskell is great (tho' I am but a novice at it) but it is still a bit niche-y.
...OCaml probably has enough credibility to get away with it.
What's the basis for your claim here?
Over the years, I'd estimate I've worked with around a hundred grad students, postdocs, and professors in Physics, Electrical/Computer Engineering, and Applied Math. I have literally never met one who used OCaml. I would be very surprised if more than a handful had so much as heard of it. That's because these people are about as interested in programming as the average programmer is interested in Schur-Newton-Krylov solvers.
Firstly, if Jane Street are able to use it, it must have been signed off by their auditors and regulators, so we can be pretty confident in its numerical correctness. Secondly, it holds the record for the fastest Fourier transform - again, it couldn't do that if it was fastest by getting it wrong...
I've also seen job ads for it from other banks including Credit Suisse.
The functional programmer in me is really happy that so many people are saying "Haskell!" but based on my own experience in applied physics, it's a terrible idea.
Programming in the sciences is all about numerics. That means giant fiddly matrix manipulation libraries, adaptive conditioning, stability bounding, and adjustments for the phase of the moon.
There's a pretty simple reason for all the gobbledygook. Often, the entire solution to a given problem is expressed as one giant matrix equation (i.e. y = Ax), because that's an easy format for a big computer to chew on. The trouble is, there are lots of possible ways such computations can return a result that looks right but is actually completely buggered. Finite precision floating-point numbers is one, but there are others. And since inverting one giant matrix is pretty much the only thing* that happens in a computation, you don't have a lot of debugging options when something goes wrong. So boutique languages like Haskell won't be all that useful except for prototyping because nobody else will trust the numbers you produce.
There really aren't that many mainstream choices. Matlab is the all-singing, all-dancing prototyping tool that you must know if you want to have any dealings with scientists. Matlab can compile its code to C or Fortran (I'm pretty sure, anyway), which are your two other choices.