- assembler (low level language)
- compiled languages
- PL/M51 (history...) ?
- Basic? (compiled versions)
- interpreted languages
- fully interpreted (edited on microcontroller)
- pretokenized (edited on computer)
- Forth? (?)
Programming tools typically output hexfile
These languages often come as part of an integrated develoment environment (IDE), bundled together with an editor (possibly with syntax highlight) and various debugging tools (usually a software simulator
"GUI" and/or emulator
However, today there are also quite a couple of general IDEs around (e.g. UltraEdit, se), allowing to quickly integrate whatever tools you have for '51 programming and debugging on different platforms.