Is there any other way to program the Lego Mindstorms NXT other than the provided software?
The programming interface used by LEGO creates programs which make use of the standard firmware, that is, the one provided by LEGO.

If you look at alternatives (see also this answer for more information), you'll notice that quite a lot of them use the same firmware.

This means that the programs they produce use the same language which is interpreted by the standard firmware. One advantage is that you can have a mix of programs on the same NXT brick and it doesn't matter with what they've been originally written.

If you're interested to know more about the standard firmware and how to program it, you can download the Mindstorms Software Developer Kit. One of the interesting aspects of it is that you don't always need to create programs but you can send direct commands to the NXT as well - meaning you actual programming logic can sit on another connected device (PC, smartphone,...).

Others alternate languages use a different firwmare altogether, which means you can't mix languages at all. But if it uses a language you're more familiar with, it may be worth trying. (You can always revert to the standard firmware anyway.)