Mathematica's Manipulate[] functionality got me hooked on interactivity, so once I had the beam propagation code running smoothly, I decided to implement a primitive GUI for it -- how hard could it be?.. Wasn't hard, really, but somewhat time consuming and required lots of code. I mean, order of 100 lines of code to do something that's almost a one-liner in Mathematica.
While it is certainly lacking on the elegance part, it runs fast. If I had to do it over again, though, I would implement the numerics in Matlab, dump it all into a datafile, read into Mathematica and Manipulate[] away.