Interpreted Languages

What is it?

An Interpreted language is a language which has most of it’s implementations execute instructions directly and freely, without the need to compile the program into machine-language instructions. The way it works is that the interpreter executes the program directly, and translates each statement into a sequence of one or more subroutines into another language, such as machine code.


  • Platform Independence – Interpreted languages can be executed on many platforms as they are not compiled in a particular way. This means they can be easily implemented into different platforms.
  • Reflection
  • Dynamic Typing
  • Smaller executable size – Since the program is interpreted live, it doesn’t require as much space as a compiler which would put the program into a single file would.
  • Dynamic Scoping


  • Less reliability – There is no type-checking as there usually would be with a compiler, which means that there is lower reliability as type checking would normally eliminate a class of programming errors.
  • Susceptible to attacks – Interpreters are often susceptible to code injection attacks as they read the code line by line, meaning that if someone were to inject malicious code it will also be read.
  • Slower execution – Compared to a compiled program which uses the systems processing power to execute the code, it is much slower. A technique used to improve performance is just-in-time compilation which converts frequently executed sequences of interpreted instruction to host machine code
  • Source code can be seen – The source code can be read and copied, for example JavaScript in a website. Or it can be quite easily reverse engineered through the use of reflection in applications.