- Befunge
-
Befunge — стековый эзотерический язык программирования. Считается двумерным, так как программа на Befunge записывается в таблицу со сшитыми краями (тор), по которой в различных направлениях перемещается интерпретатор, исполняя команды, расположенные в её ячейках.
Первая версия языка Befunge была создана Крисом Пресси в 1993. Как утверждал автор, его целью было разработать язык, максимально сложный для компиляции. Сложность обеспечивается командами p и g, модифицирующими текст программы.
Версия Befunge-93 ограничена таблицей 25X80 (стандартный размер текстового экрана) и потому не обладает тьюринговской полнотой. Befunge на бесконечной таблице полон по Тьюрингу.
Все одномерные языки программирования требуют некоторых синтаксических различий между комментариями и исходным кодом. В языке Befunge нет особого синтаксиса для комментариев, чтобы вставить документацию в код программист просто «обводит» управление вокруг области комментария.
Система команд Befunge
Ниже перечислены команды языка Befunge. Каждая команда кодируется одним ASCII-символом. Для стековых операций в скобках дан их эквивалент в языке Forth. Команды, берущие параметры из стека, удаляют их со стека.
перемещение (9): > Двигаться вправо < Двигаться влево ^ Двигаться вверх v Двигаться вниз _ Двигаться вправо, если на вершине стека 0, иначе — влево. | Двигаться вниз, если на вершине стека 0, иначе — вверх. ? Двигаться в случайном направлении # Пропустить следующую ячейку ("трамплин") @ Конец программы манипулирование со стеком (3): : Поместить в стек копию вершины (forth:DUP) \ Обменять местами вершину и подвершину (forth:SWAP) $ Удалить вершину (forth:DROP) модификация кода программы (2): p "PUT": со стека извлекаются координаты ячейки и ASCII-код символа, который помещается по этим координатам g "GET": со стека извлекаются координаты ячейки; ASCII-код символа по этим координатам помещается в стек константы (2): 0-9 Поместить число в стек " Начало/конец символьного режима, в котором ACSII-коды всех текущих символов программы помещаются в стек стековые арифметические операции (5): + Сложение вершины и подвершины (forth:+) - Вычитание вершины и подвершины (forth:-) * Умножение вершины и подвершины (forth:*) / Целочисленное деление (forth:/) % Остаток от деления (forth:MOD) стековые логические операции (2): ! Отрицание: нуль на вершине заменяется на 1, ненулевое значение — на 0 (forth:0=) ` Сравнение "больше, чем": если подвершина больше вершины, в стек помещается 1, иначе 0 (forth:>) ввод-вывод (4): & Запросить у пользователя число и поместить его в стек ~ Запросить у пользователя символ и поместить в стек его ASCII-код . Распечатать вершину стека как целое число (forth:.) , Распечатать символ, соответствующий ASCII-коду на вершине стека (forth:EMIT) Примеры программ
>v ^<
Программа, печатающая «Hello World!»:
> v @,,,,,,,,,,,,"Hello World!"<
Генератор случайных чисел:
vv < < 2 ^ v< v1<?>3v4 ^ ^ > >?> ?>5^ v v v9<?>7v6 v v< 8 . > > ^ ^<
Вывод первых 14-ти (от 0 до 233) чисел Фибоначчи:
62*1+v>01p001>+v>\:02p\:02gv 0 ^ < . :p " .1 v 0," "<0 " >1g12-+:| , @ >^
Основные языки программирования (сравнение • IDE • история • хронология) Используемые
в разработкеАда • APL • Язык ассемблера • ActionScript • ABAP/4 • AutoIt • AWK • Бейсик • Си • Кобол • C++ • C# • Cω • Clarion • Clojure • ColdFusion • Common Lisp • D • dBase • Delphi • Eiffel • Erlang • Euphoria • F# • Форт • Фортран • Gambas • Go • Groovy • HAL/S • Haskell • Icon • Java • JavaScript • Limbo • Lua • Модула-3 • Object Pascal • Objective-C • OCaml • Oz • Parser • Паскаль • Компонентный Паскаль • Perl • PHP • PowerBASIC • Python • ПЛ/1 • Пролог • Ruby • Scala • Scheme • Smalltalk • SQL • PL/SQL • Tcl • Vala • Visual Basic (.NET)
Академические IEC 61131-3 Instruction List • ST • FBD • Ladder Diagram (LD) • SFC
Прочие Эзотерические Визуальные Категории:- Эзотерические языки программирования
- Языки программирования
Wikimedia Foundation. 2010.