<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://camokathomelab.servebeer.com/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Befunge</id>
	<title>Befunge - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://camokathomelab.servebeer.com/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Befunge"/>
	<link rel="alternate" type="text/html" href="https://camokathomelab.servebeer.com/mediawiki/index.php?title=Befunge&amp;action=history"/>
	<updated>2026-07-17T01:01:04Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://camokathomelab.servebeer.com/mediawiki/index.php?title=Befunge&amp;diff=45451&amp;oldid=prev</id>
		<title>imported&gt;Lê Lợi (bot): Автодевикификация Шаблон:Языки программирования.</title>
		<link rel="alternate" type="text/html" href="https://camokathomelab.servebeer.com/mediawiki/index.php?title=Befunge&amp;diff=45451&amp;oldid=prev"/>
		<updated>2025-12-03T11:40:00Z</updated>

		<summary type="html">&lt;p&gt;Автодевикификация &lt;a href=&quot;/mediawiki/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:%D0%AF%D0%B7%D1%8B%D0%BA%D0%B8_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Шаблон:Языки программирования (страница не существует)&quot;&gt;Шаблон:Языки программирования&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Befunge&amp;#039;&amp;#039;&amp;#039; — [[стековый язык|стековый]] [[эзотерический язык программирования]]. Считается &amp;#039;&amp;#039;двумерным&amp;#039;&amp;#039;, так как [[Компьютерная программа|программа]] на Befunge записывается в [[отношение (реляционная модель)|таблицу]] со сшитыми краями ([[тор (поверхность)|тор]]), по которой в различных направлениях перемещается [[интерпретатор]], исполняя команды, расположенные в её ячейках. Название языка родилось из опечатки в слове «before».&lt;br /&gt;
&lt;br /&gt;
Первая версия языка Befunge была создана [[Пресси, Крис|Крисом Пресси]] в [[1993 год]]у. Как утверждал автор, его целью было разработать язык, максимально сложный для [[компилятор|компиляции]]. Сложность обеспечивается командами &amp;#039;&amp;#039;&amp;#039;p&amp;#039;&amp;#039;&amp;#039; и &amp;#039;&amp;#039;&amp;#039;g&amp;#039;&amp;#039;&amp;#039;, модифицирующими текст программы.&lt;br /&gt;
&lt;br /&gt;
Версия &amp;#039;&amp;#039;&amp;#039;Befunge-93&amp;#039;&amp;#039;&amp;#039; ограничена таблицей 25X80 (стандартный размер [[текстовый терминал|текстового экрана]]) и потому не обладает [[Полнота по Тьюрингу|тьюринговской полнотой]]. Befunge на [[бесконечное множество|бесконечной]] таблице [[Полнота по Тьюрингу|полон по Тьюрингу]].&lt;br /&gt;
&lt;br /&gt;
Все одномерные языки программирования требуют некоторых синтаксических различий между комментариями и исходным кодом. В языке Befunge нет особого синтаксиса для комментариев, чтобы вставить документацию в код, программист просто «обводит» управление вокруг области комментария.&lt;br /&gt;
&lt;br /&gt;
== Система команд Befunge ==&lt;br /&gt;
Ниже перечислены команды языка Befunge. Каждая команда кодируется одним [[ASCII]]-символом. Для стековых операций в скобках дан их эквивалент в языке [[Forth]]. Команды, берущие параметры из стека, удаляют их со стека.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
 |colspan=2 | &amp;#039;&amp;#039;&amp;#039;перемещение (9):&lt;br /&gt;
 |-&lt;br /&gt;
 |width=40 align=&amp;quot;center&amp;quot;| &amp;gt; || Двигаться вправо                                                                                          &lt;br /&gt;
 |-&lt;br /&gt;
 |align=&amp;quot;center&amp;quot;| &amp;lt; ||  Двигаться влево                                                                                           &lt;br /&gt;
 |-&lt;br /&gt;
 |align=&amp;quot;center&amp;quot;| ^ ||  Двигаться вверх                                                                                           &lt;br /&gt;
 |-&lt;br /&gt;
 |align=&amp;quot;center&amp;quot;| v ||  Двигаться вниз                                                                                            &lt;br /&gt;
 |-&lt;br /&gt;
 |align=&amp;quot;center&amp;quot;| _ ||  Двигаться вправо, если на вершине стека 0, иначе — влево. &lt;br /&gt;
 |-&lt;br /&gt;
 |align=&amp;quot;center&amp;quot;| | ||  Двигаться вниз, если на вершине стека 0, иначе — вверх.&lt;br /&gt;
 |-&lt;br /&gt;
 |align=&amp;quot;center&amp;quot;| ? ||  Двигаться в случайном направлении                                                                         &lt;br /&gt;
 |-&lt;br /&gt;
 |align=&amp;quot;center&amp;quot;| # ||  Пропустить следующую ячейку (&amp;quot;трамплин&amp;quot;)                                                                  &lt;br /&gt;
 |-&lt;br /&gt;
 |align=&amp;quot;center&amp;quot;| @ ||  Конец программы                                                                                           &lt;br /&gt;
 |-&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=2 | &amp;#039;&amp;#039;&amp;#039;манипулирование со стеком (3): &lt;br /&gt;
 |-&lt;br /&gt;
 |align=&amp;quot;center&amp;quot;| : ||  Поместить в стек копию вершины (forth:DUP)                                                                &lt;br /&gt;
 |-&lt;br /&gt;
 |align=&amp;quot;center&amp;quot;|  \ || Обменять местами вершину и подвершину (forth:SWAP)                                                        &lt;br /&gt;
 |-&lt;br /&gt;
 |align=&amp;quot;center&amp;quot;| $ || Удалить вершину (forth:DROP)                                                                              &lt;br /&gt;
 |-                                                                                                                      &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=2 | &amp;#039;&amp;#039;&amp;#039;модификация кода программы (2):&lt;br /&gt;
 |-&lt;br /&gt;
 |align=&amp;quot;center&amp;quot;| p || &amp;quot;PUT&amp;quot;: со стека извлекаются координаты ячейки и ASCII-код символа, который помещается по этим координатам &lt;br /&gt;
 |-&lt;br /&gt;
 |align=&amp;quot;center&amp;quot;| g || &amp;quot;GET&amp;quot;: со стека извлекаются координаты ячейки; ASCII-код символа по этим координатам помещается в стек    &lt;br /&gt;
 |-                                                                                                                      &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=2 | &amp;#039;&amp;#039;&amp;#039;константы (2):&lt;br /&gt;
 |-&lt;br /&gt;
 |align=&amp;quot;center&amp;quot;| 0-9 || Поместить число в стек                                                                                    &lt;br /&gt;
 |-                                                                                                                      &lt;br /&gt;
 |align=&amp;quot;center&amp;quot;| &amp;quot; || Начало/конец символьного режима, в котором ASCII-коды всех текущих символов программы помещаются в стек   &lt;br /&gt;
 |-                                                                                                                      &lt;br /&gt;
 |-                                                                                                                      &lt;br /&gt;
 |colspan=2 | &amp;#039;&amp;#039;&amp;#039;стековые арифметические операции (5):&amp;#039;&amp;#039;&amp;#039;                                                                       &lt;br /&gt;
 |-                                                                                                                      &lt;br /&gt;
 |align=&amp;quot;center&amp;quot;| + || Сложение вершины и подвершины (forth:+)                                                                   &lt;br /&gt;
 |-                                                                                                                      &lt;br /&gt;
 |align=&amp;quot;center&amp;quot;| - || Вычитание вершины и подвершины (forth:-)                                                                  &lt;br /&gt;
 |-                                                                                                                      &lt;br /&gt;
 |align=&amp;quot;center&amp;quot;| * || Умножение вершины и подвершины (forth:*)                                                                  &lt;br /&gt;
 |-                                                                                                                      &lt;br /&gt;
 |align=&amp;quot;center&amp;quot;| / || Целочисленное деление (forth:/)                                                                           &lt;br /&gt;
 |-                                                                                                                      &lt;br /&gt;
 |align=&amp;quot;center&amp;quot;| % || Остаток от деления (forth:MOD)                                                                            &lt;br /&gt;
 |-                                                                                                                      &lt;br /&gt;
 |-                                                                                                                      &lt;br /&gt;
 |colspan=2 | &amp;#039;&amp;#039;&amp;#039;стековые логические операции (2):&amp;#039;&amp;#039;&amp;#039;                                                                           &lt;br /&gt;
 |-                                                                                                                      &lt;br /&gt;
 |align=&amp;quot;center&amp;quot;| ! || Отрицание: нуль на вершине заменяется на 1, ненулевое значение — на 0  (forth:0=)                         &lt;br /&gt;
 |-                                                                                                                      &lt;br /&gt;
 |align=&amp;quot;center&amp;quot;| ` || Сравнение &amp;quot;больше, чем&amp;quot;: если подвершина больше вершины, в стек помещается 1, иначе 0 (forth:&amp;gt;)           &lt;br /&gt;
 |-                                                                                                                      &lt;br /&gt;
 |-                                                                                                                      &lt;br /&gt;
 |colspan=2 | &amp;#039;&amp;#039;&amp;#039;ввод-вывод (4):&amp;#039;&amp;#039;&amp;#039;                                                                                             &lt;br /&gt;
 |-                                                                                                                      &lt;br /&gt;
 |align=&amp;quot;center&amp;quot;|  &amp;amp; ||  Запросить у пользователя число и поместить его в стек                                                     &lt;br /&gt;
 |-                                                                                                                      &lt;br /&gt;
 |align=&amp;quot;center&amp;quot;|  ~ ||  Запросить у пользователя символ и поместить в стек его ASCII-код                                          &lt;br /&gt;
 |-                                                                                                                      &lt;br /&gt;
 |align=&amp;quot;center&amp;quot;|  . ||  Распечатать вершину стека как целое число (forth:.)                                                       &lt;br /&gt;
 |-                                                                                                                      &lt;br /&gt;
 |align=&amp;quot;center&amp;quot;|  , ||  Распечатать символ, соответствующий ASCII-коду на вершине стека (forth:EMIT)                                &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== Примеры программ ==&lt;br /&gt;
&lt;br /&gt;
[[Бесконечный цикл]]:&lt;br /&gt;
 &amp;gt;v&lt;br /&gt;
 ^&amp;lt; &lt;br /&gt;
Программа, печатающая «[[Программа Hello world|Hello, World!]]»:&lt;br /&gt;
 &amp;gt;                          v&lt;br /&gt;
 @,,,,,,,,,,,,&amp;quot;Hello World!&amp;quot;&amp;lt;&lt;br /&gt;
&lt;br /&gt;
Генератор случайных чисел:&lt;br /&gt;
  vv  &amp;lt;      &amp;lt;&lt;br /&gt;
      2&lt;br /&gt;
      ^  v&amp;lt;&lt;br /&gt;
   v1&amp;lt;?&amp;gt;3v4&lt;br /&gt;
      ^   ^&lt;br /&gt;
  &amp;gt;  &amp;gt;?&amp;gt;  ?&amp;gt;5^&lt;br /&gt;
      v   v&lt;br /&gt;
   v9&amp;lt;?&amp;gt;7v6&lt;br /&gt;
      v  v&amp;lt;&lt;br /&gt;
      8&lt;br /&gt;
   .  &amp;gt;  &amp;gt;   ^&lt;br /&gt;
  ^&amp;lt;&lt;br /&gt;
&lt;br /&gt;
Вывод первых 14 (от 0 до 233) [[Числа Фибоначчи|чисел Фибоначчи]]:&lt;br /&gt;
 62*1+v&amp;gt;01p001&amp;gt;+v&amp;gt;\:02p\:02gv&lt;br /&gt;
      0       ^             &amp;lt;&lt;br /&gt;
      .         :p&lt;br /&gt;
      &amp;quot;         .1&lt;br /&gt;
         v 0,&amp;quot; &amp;quot;&amp;lt;0&lt;br /&gt;
      &amp;quot;  &amp;gt;1g12-+:|&lt;br /&gt;
      ,          @&lt;br /&gt;
      &amp;gt;^&lt;br /&gt;
&lt;br /&gt;
{{нет источников|дата=2018-06-22}}&lt;br /&gt;
&lt;br /&gt;
[[Категория:Эзотерические языки программирования]]&lt;br /&gt;
[[Категория:Языки программирования по алфавиту]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Lê Lợi (bot)</name></author>
	</entry>
</feed>