What an Interpreter Does With Each Instruction

An interpreter is a program that runs another program. It reads an instruction, figures out what it means, and carries out the requested operation—such as adding two values or choosing which branch to follow. Rather than first producing a complete native executable, it handles the program step by step as execution proceeds.

That extra layer can make changes easy to test. A developer can edit a script and run it again without a separate build step that turns the entire program into a stand-alone machine-code file. Many interpreted environments also allow values and operations to be decided while the program is running, which can be useful for scripting and experimentation.

The Tradeoff—and the Modern Middle Ground

The interpreter must do work alongside the program: read or look up instructions, determine their meaning, and dispatch the corresponding operation. A compiled program can often run previously translated machine instructions directly, so it may spend less time on that repeated interpretation. The difference is most noticeable in code that performs the same operations many times; the interpreter’s overhead accumulates with every step.

The boundary is not absolute. Some language systems first turn source code into compact bytecode—an intermediate set of instructions—and interpret that. Others use just-in-time compilation, translating frequently executed parts into machine code while the program is running. This can recover speed without requiring the programmer to compile the entire application in advance.

So “interpreted” describes an execution approach, not a guarantee that every line is handled in the simplest possible way. The practical tradeoff is between the convenience of running code through a language runtime and the extra work that runtime may have to do.