Compiler: A compiler is a translator program that takes in source code (high level language) as input and converts that to machine code (binary objects). The compiler converts the entire program source code at compile-time.
Interpreter: An interpreter is a translator program which emulates the behavior of a program in execution. It converts the program source code by evaluating one line at a time, rather than the entire program. An interpreter does not also generate intermediary object code.