Languages are sometimes categorized as compiled or interpreted. Of course C interpreters and LISP compilers have been written but in most cases there are important differences between languages designed to be compiled or to be interpreted. Compiled languages lead to more efficient executables and strong static type checking while interpreted languages are more flexible and offer a richer run-time environment.
In particular, an interpreted language lets the user add new code at run time. This new code might be used for user specified behavior (.emacs initialization/customization file in the emacs editor) or for testing and prototyping. For example, mathematical operations may be called by the user to realize more complex operations, like in spreadsheet packages.
A good compromise is to have a compiled language with an embedded scripting language. This scripting language is a simple interpreted language which can call the compiled procedures (for prototyping) and be called from the compiled procedures (for initialization/customization). A well known example is the emacs editor, written in C and with an emacs LISP interpreter embedded. A common problem with this approach is that the scripting language is often very different from the compiled language, which makes it more difficult to learn. There are also several cases where the scripting language is unfit for program development and is hard to use for anything but fairly trivial procedures (lack of expressive power, dynamic scoping, no type checking, no procedures...). The Bourne shell, C shell, Perl and Postscript scripting languages exhibit these deficiencies at various levels and are often qualified of write-only (i.e. the code is unreadable and unmaintainable).