There are a bunch of homebrew threads but 3 things
high level: there is a very limited java implementation, lua (DSlua), basic and the like and I will lump in the game making/scripting stuff. I am probably missing a few but those are the main ones I can think of.
not quite as high level: this is your C/C++ and is the workhorse of DS programming. C is a bit faster and can make some tighter code. Notable toolkits include palib and devkitpro. The latter is a group of libraries to sort the hardware and a compiler/assembler kit
Palib on the other hand is quite high level. It has somewhat of a reputation for being a bit clunky and slow but some damn nice homebrew has come from it and you can still backport as it were to the devkitpro toolchain when you grow out of it.
ASM level: the DS has 2 arm processors. An ARM9 and 66MHz and an ARM7 at 33MHz. This is mainly used for stuff like emulation, audio and video and hacking commercial roms as it can make the tightest code. Inline assembler (where you write a small section in ASM to do a particular task) is possible too. There are a couple of assemblers available but can I suggest the one with devkitpro, it is not quite as nice as some of the commercial stuff but when commercial means several thousand....