Both compilers and interpreters are used to translate high level programming languages to machine code. Compilers do this by converting all of the high level code into machine code before running the program. This allows programs to run quickly, since the entire program is ready to be run immediately. However, it can be difficult to locate problems with the program because the compiler does not identify which line is causing the problem. Interpreters however, translate high level code one line at a time, and run each line before translating the next one. This allows the bugs in the program to be easily identified, since the program will only stop when it reaches a line that causes a problem. However, since it runs one line at a time, an interpreter runs slower than a compiler.