Rather than dealing with functions of computer hardware, high-level programming languages deal with more abstract concepts. High-level programming languages focus more on what the program will output. An interpreter is required to translate high-level programming language for low-level programming languages to tell the hardware what to do.