(EDIT: Several months later upon looking back at this post, I find myself noticing that it fails to convey what I intended it to. I may make a similar post to this soon that covers my intended meaning better.)
A programming language is a specification for the format of various abstract instructions that correspond to machine code.
Most languages are text-based.
As with all specifications, there can be multiple implementations of a given language.
Some implementations execute the machine code right away. (These are called interpreters.)
Others save the machine code for later. (These are called compilers.)
When an implementation saves code for later, it can do some of the processing before-hand to save time when the compiled program is being run (these are called compile-time optimizations).
This is why running a compiled program is usually faster than interpreting source code.