История вопроса
Ниже мы перечислим наиболее важные этапы в развитии методов автоматического программирования. Те идеи, о которых мы будем говорить, принадлежат большому числу исследователей; среди них необходимо в первую очередь упомянуть М. В. Уилкиса, Д. Дж. Уилера и С. Гилла из Кембриджского университета; С. В. Адамса из Мичиганского технологического института; Грейс Хоппер из Ремингтон-Ранд и Н. Рочестера из ИБМ (Интернейшнл Бизнесе Машинз Корпорейшн).
а) Были предложены программы, которые автоматически переводили как команды, так и числа с входного языка в десятичной системе счисления (более привычной для человека) на язык машины в двоичной системе счисления (чаще используемой в конструкции машин). Важным шагом было признание необходимости использования двух языков и необходимости программного перевода с одного языка на другой (с использованием самих машин для выполнения перевода).

б) Одновременно с программами перевода из одной системы счисления в другую появились программы перевода «мнемонической» записи операций и команд (легкой для запоминания). К формам такой записи относятся использование обычных алгебраических обозначений и сокращений соответствующих полных слов — названий операций. Такие программы называются «программами перевода при вводе». Общая идея перевода решается двумя основными методами: предварительным переводом, или компилированием, и текущим переводом, или интерпретированием.
в) Для компилирования требуется наличие памяти большого объема (обычно память на магнитной ленте). Процесс перевода при компилировании обычно выполняется за один раз.
г) Интерпретирование является единственно приемлемым методом перевода на машинах с небольшой емкостью запоминающих устройств. Этот метод менее эффективен, поскольку в ходе решения задачи может потребоваться многократное повторение перевода одной и той же части программы.
Источник: delete-it