Interpreter vs. Compiler
We know that the computers can only understand binary numbers zero or one. An instruction to move or add to register memory would consist of several sequences of binary numbers: 0110010010101010101010000111001 for example. High level programming languages use a compiler or an interpreter to translate their instruction into machine code. Machine codes are independent to the machine they are in because of their architectural specification. An interpreter executes the source code written in a high level language, C++ for example, directly, while a compiler translates all of the source code into machine code and executes the machine code application. Both methodologies have their strengths and weaknesses, while in some situations an interpreter might be very optimal in terms of speed. Now a compiler spends most of its time analyzing and processing the program, but once the machine-specific binary code program is achieved, the program will be fast in execution. The interpreter translates each code and executes at the same time and can extrapolate base experience with other similar blocks of source code, which make the translation much faster. As more programming becomes complex in number, the methodology of interpreter and compiler is combined for optimal results. Many studies in the research of interpreter and compiler optimization have result in faster algorithm and faster programs.