Программа - вариант реализации алгоритма для обработки данных.
Программу тоже можно рассматривать как данные и производить с ней манипуляции. Например, если рассматривать программу как текст то её можно модифицировать в другой программе. А программу, уже загруженную в оперативную память можно рассматривать как последовательность байт, которые можно модифицировать.
P.S. Компиляторы и парсеры делают не сильно сложную работу. Они рассматривают поток текста как некие синтаксические сущности и на их основе создают понятные для компьютера вычислимые сущности. Тот код, который ты пишешь - просто текст. А вся магия в метаописании сущностей.
a:=30;
b:= 6;
a:=30*3/6 после этого a примет значение a:=15, подставляем в условие
if 15>6 then (если условие выполняется), а оно выполняется, то решаем первое уравнение
c:= 2*15-5* (6+2) получаем
c:=-10
если писать на паскале, то будет так
var a,b,c:real;
begina:= 30;b:= 6;
a:= a * 3 / b;if a > b then
c:= 2*a - 5*(b+2)else
c:= 2*a + 5*(b+2);
writeln (c);
end.