Можно ли написать бесконечную программу без циклов и рекурсии?
Конечно — для этого нужно совсем немного.MODULE NoLoops;
VAR i*: INTEGER;
PROCEDURE A*; BEGIN i := (i + 1) MOD 40000000H END A;
PROCEDURE B*; BEGIN A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A END B;
PROCEDURE C*; BEGIN B;B;B;B;B;B;B;B;B;B;B;B;B;B;B;B;B;B;B;B END C;
PROCEDURE D*; BEGIN C;C;C;C;C;C;C;C;C;C;C;C;C;C;C;C;C;C;C;C END D;
PROCEDURE E*; BEGIN D;D;D;D;D;D;D;D;D;D;D;D;D;D;D;D;D;D;D;D END E;
PROCEDURE F*; BEGIN E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E END F;
PROCEDURE G*; BEGIN F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F END G;
PROCEDURE H*; BEGIN G;G;G;G;G;G;G;G;G;G;G;G;G;G;G;G;G;G;G;G END H;
PROCEDURE I*; BEGIN H;H;H;H;H;H;H;H;H;H;H;H;H;H;H;H;H;H;H;H END I;
PROCEDURE J*; BEGIN I;I;I;I;I;I;I;I;I;I;I;I;I;I;I;I;I;I;I;I END J;
PROCEDURE K*; BEGIN J;J;J;J;J;J;J;J;J;J;J;J;J;J;J;J;J;J;J;J END K;
PROCEDURE L*; BEGIN K;K;K;K;K;K;K;K;K;K;K;K;K;K;K;K;K;K;K;K END L;
PROCEDURE M*; BEGIN L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L END M;
PROCEDURE N*; BEGIN M;M;M;M;M;M;M;M;M;M;M;M;M;M;M;M;M;M;M;M END N;
PROCEDURE O*; BEGIN N;N;N;N;N;N;N;N;N;N;N;N;N;N;N;N;N;N;N;N END O;
PROCEDURE P*; BEGIN O;O;O;O;O;O;O;O;O;O;O;O;O;O;O;O;O;O;O;O END P;
PROCEDURE Q*; BEGIN P;P;P;P;P;P;P;P;P;P;P;P;P;P;P;P;P;P;P;P END Q;
PROCEDURE R*; BEGIN Q;Q;Q;Q;Q;Q;Q;Q;Q;Q;Q;Q;Q;Q;Q;Q;Q;Q;Q;Q END R;
PROCEDURE S*; BEGIN R;R;R;R;R;R;R;R;R;R;R;R;R;R;R;R;R;R;R;R END S;
PROCEDURE T*; BEGIN S;S;S;S;S;S;S;S;S;S;S;S;S;S;S;S;S;S;S;S END T;
PROCEDURE U*; BEGIN T;T;T;T;T;T;T;T;T;T;T;T;T;T;T;T;T;T;T;T END U;
PROCEDURE V*; BEGIN U;U;U;U;U;U;U;U;U;U;U;U;U;U;U;U;U;U;U;U END V;
PROCEDURE W*; BEGIN V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V END W;
PROCEDURE X*; BEGIN W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W END X;
PROCEDURE Y*; BEGIN X;X;X;X;X;X;X;X;X;X;X;X;X;X;X;X;X;X;X;X END Y;
PROCEDURE Z*; BEGIN Y;Y;Y;Y;Y;Y;Y;Y;Y;Y;Y;Y;Y;Y;Y;Y;Y;Y;Y;Y END Z;
BEGIN i := 0
END NoLoops.
Вызов NoLoops.Z; log.in(NoLoops.i)
, если бы смог, выполнялся бы на моём компьютере около 48 квадриллионов лет. Для сравнения, возраст вселенной — около 13,8 миллиардов лет, а самые долгоживущие звёзды — красные карлики протянут меньше 100 триллионов лет. Cпор о том, является ли эта программа бесконечной, может вестись исключительно терминологически-философски.
Такие примеры показывают, что в рамках контроля за возможностями и свойствами программы может быть куда сложней, чем кажется на первый взгляд.
Комментариев нет:
Отправить комментарий