Many languages have both interpreters and compilers, but usually one method of use is dominant based on the language's design. For example, many interpreted languages have a command such as Perl's eval, which takes programming language text as data (which can be created at runtime) and executes it, something that requires a language interpreter at runtime. Languages designed for compilation, on the other hand, may have features like allowing inline assembly.
Interpreted code generally runs more slowly that compiled code, but can have many useful features that are difficult to implement in a compiled language, for example the aforementioned eval statement, platform-independence, and interactivity.
Some languages like Perl and Python are designed to be interpretable, but are often implemented by being compiled at runtime. Other languages like UCSD Pascal and Java are designed for compilation, but may be compiled into an intermediate bytecode form which is then interpreted.
Some interpreted languages:
- The original BASIC (though most modern versions are now compiled)
- Forth (traditionally threaded interpreted)
- Logo (interpretation makes interactivity easier)
- Lisp (traditionally interpreted, modern versions compiled)
- MUMPS (traditionally interpreted, modern versions compiled)