Informally, a compiled language is a programming language that is usually implemented with a compiler rather than an interpreter. Because any language can theoretically be either compiled or interpreted, the term lacks clarity: compilation and interpretation are properties of a programming language implementation, not of a programming language. Some languages have both compilers and interpreters. [1] Furthermore, a single implementation can involve both a compiler and an interpreter. For example, in some environments, source code is first compiled to an intermediate form (e.g., bytecode), which is then interpreted by an application virtual machine. [2] In other environments, a just-in-time compiler selectively compiles some code at runtime, blurring the distinction further.