LINUX.ORG.RU

История изменений

Исправление byko3y, (текущая версия) :

Судя по твоим словам, ты веришь в возможность реализации машины тьюринга(с бесконечной памятью). Приведи примеры таких реализаций

На шаблонах? Гуглится же:

#include <iostream>

template <int N> struct Factorial
{
    enum { val = Factorial<N-1>::val * N };
};

template<>
struct Factorial<0>
{
    enum { val = 1 };
};

int main()
{
    // Note this value is generated at compile time.
    // Also note that most compilers have a limit on the depth of the recursion available.
    std::cout << Factorial<4>::val << "\n";
}

Но компиляторы режут глубину, как я уже писал.

Хорошо, только ты опять ничего конкретного про «угадывание» не сказал

Что непонятно в том примере? Компилятор не может определить смысл конструкции

S<TuringMachine<...>::output>::name * x;

пока не интерпретирует шаблон - а сложность интерпретации шаблона может быть бесконечна. А задача конечности алгоритма нерешаема на машине тьюринга.

Код у них почти одинаковый

Так одинаковый или нет?

Если брать значение слова одинаковый как «такой же, вполне сходный», то да, в крестовых проектах зачастую компилируют одинаковые модули тысячи раз при компиляции одного проекта.

Исходная версия byko3y, :

Судя по твоим словам, ты веришь в возможность реализации машины тьюринга(с бесконечной памятью). Приведи примеры таких реализаций

На шаблонах? Гуглится же:

#include <iostream>

template <int N> struct Factorial
{
    enum { val = Factorial<N-1>::val * N };
};

template<>
struct Factorial<0>
{
    enum { val = 1 };
};

int main()
{
    // Note this value is generated at compile time.
    // Also note that most compilers have a limit on the depth of the recursion available.
    std::cout << Factorial<4>::val << "\n";
}

Но компиляторы режут глубину, как я уже писал.

Хорошо, только ты опять ничего конкретного про «угадывание» не сказал

Что непонятно в том примере? Компилятор не может определить смысл конструкции

S<TuringMachine<...>::output>::name * x;

пока не интерпретирует шаблон - а сложность интерпретации шаблона может быть бесконечна. А задача конечности алгоритма нерешаема на машине тьюринга.