В программировании всё построено по принципу от низкого уровня к более высокому уровню. Процессор работает с машинным кодом, а это упомянутые выше нули и единицы из двоичной системы счисления. Их хоть на бумаге записывай, не нужны никакие "программы для программирования". На первых компьютерах собственно так оно и было, носителями данных были обычные бумажные перфоленты. Есть дырочка - 1, нет дырочки - 0