"Программа для программирования" это и есть само программирование, а точнее огромный набор данных, поясняющих, какие вычисления проводит процессор, если программист введёт n-ую команду. Это действительно огромная база данных взаимодействий, именно по этому ЯП очень гибкие, и можно делать АБСОЛЮТНО всё, что захочешь. Как задавали этот "набор данных"? Здесь мы уже упираемся во взаимодействие с самим процессором при помощи понятного для машины двоичного кода. Он уже не зависит от "программ для программирования", это есть наименьшая единица, наименьшая составляющая ВСЕХ процессов в ЭВМ. По сути можно программировать с помощью него, но это будет очень сложно и неэффективно