Что происходит в Befunge, если выполнение программы выходит за пределы программы?
Я не смог найти ответ на этот вопрос... Есть ли "периодическое граничное условие"? Т.е. продолжается ли выполнение на противоположном сайте? Или это незаконно, что выполнение покидает программу?
1 ответ
С http://en.wikipedia.org/wiki/Befunge
Спецификация Befunge-93 ограничивает каждую действующую программу сеткой из 80 команд по горизонтали на 25 команд по вертикали. Выполнение программы, которое превышает эти пределы, "оборачивается" в соответствующую точку на другой стороне сетки; Таким образом, программа Befunge топологически эквивалентна тору.
Итак, для "классического" Befunge, да, это обертки. Но более поздние разработки сделали это не так просто.
Поскольку программа Befunge-93 может иметь только один стек, а ее массив хранения ограничен, язык Befunge-93, в отличие от большинства машинных языков, не является полным по Тьюрингу (однако было показано, что Befunge-93 является завершающим по Тьюрингу с неограниченный размер слова стека).[3] Более поздняя спецификация Funge-98 обеспечивает полноту по Тьюрингу, устраняя ограничения на размер программы; вместо того, чтобы перемещаться вокруг с фиксированным пределом, перемещение указателя инструкций Funge-98 следует модели, названной "Lahey-space" после ее создателя, Криса Лахи. В этой модели сетка ведет себя как тор конечного размера относительно обтекания, при этом все еще позволяя себе расширяться до бесконечности.