Алгоритм - это концептуальное описание шагов, которые необходимо выполнить для решения той или иной задачи.
Программа - это запись алгоритма на специальном языке (программирования), который понятен исполнителю.
Исполнитель - это нечто, что умеет шаг за шагом выполнять программу, написанную на понятном ему языке.
Уровень языка - это позиция языка в шкале "компьютер - человек". Чем ниже уровень - тем более он понятен компьютеру и менее понятен человеку, и наоборот.
Компьютер знает только один язык - машинный, причем у каждой машины он свой. Это простейший язык, состоящий из команд: сложить, вычесть, сравнить, скопировать, перейти к выполнению инструкций номер такой-то и т.д. Раньше все программы писались только на машинных языках, но это было неудобно: во-первых, одну и то же программу надо было переписывать под компьютеры с разными архитектурами, а во-вторых, программирование на таком примитивном языке - занятие утомительное и подверженное ошибкам. Поэтому человек придумал языки высокого уровня (например, язык Си).
Машинный язык является языком низкого уровня. Машина не понимает языков высокого уровня, поэтому, прежде чем программу, написанную на языке Си (или любом другом не машинном), сможет выполнить компьютер, ее необходимо перевести на язык, понятный компьютеру (машинный). Этим занимается компилятор.
Таким образом, компилятор - это программа, которая переводит текст, написанный на языке программирования, в машинные коды.