This fusion of interpreted and compiled code is extremely natural for mathematics software; some algorithms are much better implemented in an interpreter because all time-critical steps involve low level arithmetic -- other algorithms, e.g., matrix multiplication, must be implemented in a compiled language in order to perform optimally. Also, existing compiled libraries are sometimes of very high quality, and a compiled language is needed to create the best possible interface to such libraries. It's crucial that both approaches to programming be fully supported. When deciding how to implement Sage, I searched for months for an environment that could support both approaches. Python and Cython provide exactly this in a way that I believe is much easier conceptually than the implementation models of any of the other systems mentioned above.
See About this document... for information on suggesting changes.