What is the purpose of interpreting and compiling high-level programming languages?

Perform complex calculations
Provide source code for software
Test and debug code to resolve issues
Translate program code into machine code