What is the difference between compiler and interpreter?