A compiler, in general, reads higher level language computer code and converts it to either p-code or native machine code. // interpreted by software
An interpreter runs directly from p-code or an interpreted code such as Basic or Lisp. Typically, compled code runs much faster, is more compact and has already found all of the syntax errors and many of the illegal reference errors.
Interpreted code only finds such errors after the application attempts to interpret the affected code. Interpreted code is often good for simple applications that will only be used once or at most a couple times, or maybe even for prototyping.
Compiled code is better for serious applications.
http://en.wikipedia.org/wiki/P-code_machine
Some programing languages:
Duck_typing: http://en.wikipedia.org/wiki/Duck_typing
Script: http://en.wikipedia.org/wiki/Script