<P> Early versions of Lisp programming language and Dartmouth BASIC would be examples of the first type . Perl, Python, MATLAB, and Ruby are examples of the second, while UCSD Pascal is an example of the third type . 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 and contemporary versions of BASIC and Java may also combine two and three . Interpreters of various types have also been constructed for many languages traditionally associated with compilation, such as Algol, Fortran, Cobol and C / C++ . </P> <P> While interpretation and compilation are the two main means by which programming languages are implemented, they are not mutually exclusive, as most interpreting systems also perform some translation work, just like compilers . The terms "interpreted language" or "compiled language" signify that the canonical implementation of that language is an interpreter or a compiler, respectively . A high level language is ideally an abstraction independent of particular implementations . </P> <P> The first interpreted high - level language was Lisp . Lisp was first implemented in 1958 by Steve Russell on an IBM 704 computer . Russell had read John McCarthy's paper, and realized (to McCarthy's surprise) that the Lisp eval function could be implemented in machine code . The result was a working Lisp interpreter which could be used to run Lisp programs, or more properly, "evaluate Lisp expressions". </P> <P> Programs written in a high level language are either directly executed by some kind of interpreter or converted into machine code by a compiler (and assembler and linker) for the CPU to execute . </P>

How does an interpreter translate high level code to machine code