A compiler is a program that translates source code written in one programming language into another target language. It performs several steps including lexical analysis, parsing, code generation and optimization. The compiler consists of a front end that checks syntax and semantics, a middle end that performs optimizations, and a back end that generates assembly code. Compilers can be single pass or multi pass and are used to translate from high-level languages like C to machine-executable object code.