Interpreter (computing)

related topics
{math, number, function}
{system, computer, user}

In computer science, an interpreter normally means a computer program that executes, i.e. performs, instructions written in a programming language. An interpreter may be a program that either

Perl, Python, MATLAB, and Ruby are examples of type 2, while UCSD Pascal and Java are type 3: Source programs are compiled ahead of time and stored as machine independent code, which is then linked at run-time and executed by an interpreter and/or compiler (for JIT systems). Some systems, such as Smalltalk, BASIC and others, may also combine 2 and 3.

While interpreting and compiling are the two main means by which programming languages are implemented, these are not fully distinct categories, one of the reasons being that most interpreting systems also perform some translation work, just like compilers. The terms "interpreted language" or "compiled language" merely mean that the canonical implementation of that language is an interpreter or a compiler; a high level language is basically an abstraction which is (ideally) independent of particular implementations.


Bytecode interpreters

There is a spectrum of possibilities between interpreting and compiling, depending on the amount of analysis performed before the program is executed. For example, Emacs Lisp is compiled to bytecode, which is a highly compressed and optimized representation of the Lisp source, but is not machine code (and therefore not tied to any particular hardware). This "compiled" code is then interpreted by a bytecode interpreter (itself written in C). The compiled code in this case is machine code for a virtual machine, which is implemented not in hardware, but in the bytecode interpreter. The same approach is used with the Forth code used in Open Firmware systems: the source language is compiled into "F code" (a bytecode), which is then interpreted by a virtual machine.

Full article ▸

related documents
Comparison of Java and C++
Character encodings in HTML
Haskell (programming language)
Prototype-based programming
Liouville number
Hypercomplex number
Boolean algebra (structure)
Finite difference
Positive-definite matrix
Stone–Weierstrass theorem
Power set
Yoneda lemma
Weak topology
Cauchy's integral formula
Even and odd permutations
Blackboard bold
Julia set
Solvable group
Integer (computer science)
Max-flow min-cut theorem
Gamma function
Separation axiom
Integer factorization
Tychonoff space
Supervised learning