If you have Magma, Maple or Mathematica and don't mind restricting who can use your code, you could also implement parts of your program in one of these systems and make it available in Sage.
GAP, GSL, Matplotlib, Maxima, MWRANK, NetworkX, NTL, Numpy, PARI and Singularare all included with all distributions of Sage. GAP, Singular, and PARI are very mature, and each implements a great amount of functionality, though in different domains. GAP addresses group theory well, Singular attacks polynomial computation, and PARI contains sophisticated, optimized number theory algorithms. Notably absent from this triad is a good system for exact linear algebra (something MAGMA does extremely well), but this gap is being filled by code being written for Sage.
Sage is not just about gathering together functionality (something UNIX already does well), it is about providing a clear, systematic and consistent way to access a large number of algorithms, in a coherent framework that makes sense mathematically. In the design of Sage, the semantics of objects, the definitions, etc., are informed by how the corresponding objects are used in everyday mathematics.
This document was authored by William Stein, David Joyner and others with the editorial help of Iftikhar Burhanuddin.
See About this document... for information on suggesting changes.