Программа - вариант реализации алгоритма для обработки данных.
Программу тоже можно рассматривать как данные и производить с ней манипуляции. Например, если рассматривать программу как текст то её можно модифицировать в другой программе. А программу, уже загруженную в оперативную память можно рассматривать как последовательность байт, которые можно модифицировать.
P.S. Компиляторы и парсеры делают не сильно сложную работу. Они рассматривают поток текста как некие синтаксические сущности и на их основе создают понятные для компьютера вычислимые сущности. Тот код, который ты пишешь - просто текст. А вся магия в метаописании сущностей.
open System
[<EntryPoint>]
let main argv =
let mutable sum = 0
let mutable i = 0
let array = [19..51]
while i < array.Length do
let value = array.Item i
if 5 % value = 0 then
sum <- sum + value
i <- i+1
Console.WriteLine sum
Console.ReadKey true |> ignore
0
// Pascal (for)
var sum : integer;
i: integer;
begin
sum := 0;
i := 0;
for i:=19 to 51 do
begin
if i mod 5 = 0 then
sum := sum + i;
end;
writeln(sum);
end.
// Pascal
var sum : integer;
i: integer;
begin
sum := 0;
i := 19;
while (i <= 51) do
begin
if i mod 5 = 0 then
sum := sum + i;
i := i + 1;
end;
writeln(sum);
end.