LINUX.ORG.RU

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

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

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

А REPL + JIT просто добавляют тот факт, что в процессе выполнения может появляться ещё и _новый_ код по которому может прыгать IP.

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

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