История изменений
Исправление quasimoto, (текущая версия) :
Вообще, то о чём говорил anonymous это общее свойство машин Тьюринга, архитектуры фон Неймана и т.п. Т.е. скорее правило, чем исключение — скорее трудно найти цикличный поток выполнения, чем наоборот. Т.е. у нас есть программа которая загружена в память в виде кода машины, это одна вещь, другая — поток команд при её выполнении, IP скачет по этому коду в памяти и получается совсем другой код, довольно часто не цикличный. Например, безусловный loop { ... } может быть цикличным, он же с условиями, даже простой loop { ... if(...) { ...; } else { .... } ... }, будет нецикличным (и легко может быть бесконечным), точнее, цикличность будет зависеть от поведения условий, которое зависит от внешнего входа и свойств обрабатываемых данных — любые интерактивные программы, любые сервера, любые числовые свойства (типа примера с пи) могут быть примерами.
А REPL + JIT просто добавляют тот факт, что в процессе выполнения может появляться ещё и _новый_ код по которому может прыгать IP.
Исходная версия quasimoto, :
Вообще, то о чём говорил anonymous это общее свойство машин Тьюринга, архитектуры фон Неймана и т.п. Т.е. скорее правило, чем исключение — скорее трудно найти цикличный поток выполнения, чем наоборот. Т.е. у нас есть программа которая загружена в память в виде кода машины, это одна вещь, другая — поток команд при её выполнении, IP скачет по этому коду в памяти и получается совсем другой код, довольно часто не цикличный. Например, безусловный loop { ... } может быть цикличным, он же с условиями, даже простой loop { ... if(...) { ...; } else { .... } ... } будет нецикличным (и легко может быть бесконечным), точнее, цикличность будет зависеть от поведения условий, которое зависит от внешнего входа и свойств обрабатываемых данных — любая интерактивная программа, любой сервер, любое числовые свойства (типа примера с пи) могут быть примерами.