Компілятори, по суті, є перекладачами, які беруть вклад однією мовою і дають вихід на іншій. Наприклад, компілятор програми Eiffel Software приймає введення мови Ейфелева і виробляє C. GCC для Intel зчитує введення C-мови та виробляє збірку x86. Ассамблер GAS для Intel приймає збірку x86 і виробляє об'єктний код x86. Усі три речі технічно є компіляторами.
Незалежно від формату, вхід, прочитаний компілятором, називається джерелом, а вихід називається цільовим . Останній термін узятий із одного з його визначень, "передбачуваний результат".
Більшість компіляторів призначені для створення збірки або об'єктного коду для певного процесора чи архітектури. Через це, target часто використовується для посилання на саму архітектуру, а не на вихідний формат.
Ціль компілятора не повинна бути такою ж, як архітектура, де він працює, а в тих випадках, коли це відбувається, програма називається крос-компілятором . (Наприклад, GCC може бути побудований для роботи в системах x86 для компіляції C в збірку ARM.)
Крім того, є окремі компілятори, здатні виробляти вихід для різних цілей залежно від введення, наприклад, комутатори в командному рядку. Вони називаються багатоцільовими компіляторами.