История изменений
Исправление SZT, (текущая версия) :
Что конкретно ты под этим подразумеваешь?
Суперкомпиляция, специализация программ методом частичных вычислений. Например вот: http://keldysh.ru/papers/2008/prep12/prep2008_12.html#_Toc193602742
Предположим есть код вида
if (x == 5)
foo(a, x)
else
foo(a, x+1)
if (x == 5)
foo5(a)
else
foo(a, x+1)
Или даже еще лучше
char a[300];
scanf (a[0...299]);
char a1_sorted[300] ATTRIBUTE(...)
char a2_sorted[300] ATTRIBUTE(...)
qsort(a, a1_sorted);
bubble_sort(a, a2_sorted);
if(a1_sorted == a2_sorted) // тут компилятор эту проверку должен вообще выкинуть, оставив только printf("ok, good!");
printf("ok, good!");
else
printf("impossible");
scanf (a[0...299]);
и printf("ok, good!");
. И притом этот scanf (a[0...299]);
может быть тоже заспециализирован(оптимизирован) таким образом, что ничего не будет записывать в память, т.е. просто повторять наблюдаемое поведения (пользователь вводит какие-то там цифры, программа их типа читает), но реально никуда никакие числа в память заноситься не будут, и массива char a[300];
самого не будет.Исходная версия SZT, :
Что конкретно ты под этим подразумеваешь?
Суперкомпиляция, специализация программ методом частичных вычислений. Например вот: http://keldysh.ru/papers/2008/prep12/prep2008_12.html#_Toc193602742
Предположим есть код вида
if (x == 5)
foo(a, x)
else
foo(a, x+1)
if (x == 5)
foo5(a)
else
foo(a, x+1)
Или даже еще лучше
char a[300];
scanf (a[0...299]);
char a1_sorted[300] ATTRIBUTE(...)
char a2_sorted[300] ATTRIBUTE(...)
qsort(a, a1_sorted);
bubble_sort(a, a2_sorted);
if(a1_sorted == a2_sorted) // тут компилятор эту проверку должен вообще выкинуть, оставив только printf("ok, good!");
printf("ok, good!");
else
printf("impossible");
scanf (a[0...299]);
и printf("ok, good!");
. И притом этот scanf (a[0...299]);
может быть тоже заспециализирован таким образом, ничего не записывать в память, т.е. просто повторять наблюдаемое поведения (пользователь вводит какие-то там цифры, программа их типа читает), но реально никуда никакие числа в память заноситься не будут.