Сначала программы записывали в память компьютера в виде последовательности машинных кодов (чисел). С помощью специальной панели, перфокарт, перфоленты и т. п. И в таком виде программы для всех компьютеров писали несколько лет с момента появления компьютеров. Потом для записи машинных кодов придумали использовать не числа, а человекопонятные мнемоники и начали писать программы для автоматического преобразования этих мнемоник в машинные коды - ассемблеры. Жить стало проще. Потом на ассемблерах начали писать трансляторы с языков высокого уровня, независимых от конкретных компьютеров. Стало ещё проще. Потом трансляторы языков высокого уровня начали писать на языках высокого уровня... Ad infinitum.