Компилятор (compiler) — машинная программа, используемая для компиляции, а также программа или техническое средство, выполняющие компиляцию. Транслятор, выполняющий преобразование программы, составленной на исходном языке, в объектный модуль также называют компилятором. Большинство компиляторов переводят программу с высокоуровневого языка программирования в машинный код, который может быть выполнен компьютером, то есть в набор инструкций для центрального процессора. Компьютер, для которого производится компиляция, называется целевой машиной.
Некоторые компиляторы переводят программу не в машинный код, а в программу на специально созданном низкоуровневом языке. Программа на промежуточном языке интерпретируется в код целевой машины непосредственно перед исполнением. Для каждой целевой машины (IBM, Apple) и каждой операционной системы, требуется написание своего компилятора. Кросс-компиляторы позволяют на одной машине и в среде одной операционной системы получать код для выполнения на другой целевой машине или в среде другой системы. Компиляторы для одной и той же целевой машины могут быть оптимизированы под разные процессоры. Программы, которые переводят программы с низкоуровневого языка на высокоуровневый называются декомпиляторами.