You're right, that's a big question, one that I've had answered slowly over the past year or so :-)
A programming program, called a Compiler (and there is also a linker too) is created using assembly. All programming langauges are just keywords and a syntax, that is broken down into assembly. It's the lowest level of programming control you can have over a computer. The value of computer programming languages is the fact that they allow us to program a lot more assembly, in less typing, and it's easier to read and understand, but the problem is it gives you less low level control over the hardware. A programming language that lets you type very little code to get a lot done is considered a high-level programming language, while a language that is very simular to assembly in syntax and control, is considered a lower level language, and assembly is the lowest level of control possible.