In an interpreted language (or just "interpreter"), commands are executed as they are read from input. An interpreter is that part of the language which does this. This is distinct from what a compiler does. The interpreter takes the higher-level source code, and rather than just generating machine code, it goes right ahead and performs whatever instruction it has parsed and translated. Python, perl, LISP, (original old-style) BASIC, awk and Java are important interpreters. An interpreter often permits interactive use, where instructions are typed in one by one, with output returned (on screen) in between. Interpreters are also common in scripting situations, but may be useful too for heavier programming, with a tendency to rapid deployment.

Broadly speaking, interpretation happens one command at a time (or line by line), and on the fly so nothing which happens "later in the program" has any effect on what the interpreter does. This also means the average interpreter can be more relaxed (than most compilers) about type-matching, declarations, and such: once it gets to the instruction in question it will just try and execute it, and throw an error if it runs into difficulties. Apart from syntax errors, runtime errors are the norm. But take this with a grain of salt, though, as most modern interpreters do go through some intermediate bytecode compilation of instructions (especially defining entire functions, classes, etc.). This doesn't change the principle, but it does mean you need to be careful defining what "one command at a time" means.