A piece of software that compiles the source code form of a programming language into a machine readable form. Usually that machine readable form is either an executable or a linkable library that can be executed on an appropriate computer. Programming languages that are used via compilation are called compiled languages.