What is the difference between a compiler and interpreter?