Two different ways to implement programming languages. What I've described so far is compilation.
An analogy: compilation is like translating a French knitting pattern into English, then reading the English. Interpretation is like using a French dictionary on each word in turn as you knit. If there's a loop in the knitting pattern, then the latter method means you will end up retranslating the same word over and over again.
Compilation is harder; but the result is more efficient. Also, the internal representation of compiled programs loses the original structure, so you can't print it, etc. It has been suggested that experts somehow ``compile'' explicit knowledge into implicit: the information's still there, more efficient, but now unverbalisable.