1 | initial version |
I'm a physicist running numerical simulations using Sage. Probably the biggest attractions of Sage for me is that you write in Python, a real programming language that's object oriented and has a nice syntax. I had no experience with Python before picking up Sage - I just couldn't handle programming in Mathematica any longer. Python has lots of code examples, snippets and libraries available.
The second biggest attraction of Sage is that it can call Mathematica/Matlab/octave/whatever functions, so if you don't want to port all your existing code over to Sage/Python immediately, then you can still get things done.
If you want parts of your code to run fast, then you can write them in Fortran and use f2py, or write them in C using Cython. Then the high level logic of your code can be written in a nice language, while the guts of your code still runs at full speed. Sadly, the guts of the code I use still lives in Fortran run by C MathLink driven by Mathematica, and I don't understand this inherited code well enough to port it.
I've actually mostly been using numpy/scipy/matplotlib over Sage's matrices and plotting - they do seem mostly geared towards mathematicians and the numpy/scipy/matplotlib alternatives are often more flexible. But Sage offers a very nice environment to use these tools, and occasionally native Sage functions prove invaluable to me.