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. 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. In other environments, a just-in-time compiler selectively compiles some code at runtime, blurring the distinction further.