Some programming languages, such as REXX and Java, can be either interpreted or. For this reason, interpreted programs are usually less efficient than compiled programs. By contrast, with a compiled language, the resultant program is a blob of code that you run and it does its thing there is no changing it on the fly. Interpreted languages, in contrast, must be parsed, interpreted, and executed each time the program is run, thereby greatly adding to the cost of running the program. There you can type a line of code at a time and have it executed right away, with the results still live where you can experiment with them. In practical terms, with an interpreted language you may be able to use an 'interactive interpreter'.
That's kinda like machine code, but it's for a processor that doesn't actually exist the interpreter simulates the processor, 'running' the byte code.) (There may be an intermediate step of turning your text into 'byte code'. With an interpreted language, you're actually running a program that interprets your human readable text on the fly and performs the operations specified by it. On Windows that would end up in an exe or com or dll file.
Compilation takes the human-readable text and converts it into machine code. With a compiled language, what you're actually running is native machine code for the processor in your computer.