Blue
Red
Green
Orange
Voilet
Slate
Dark
  • Приватные и секретные разделы доступны только зарегистрированным пользователям.

    Вся важная информация в нашем ТГ: t.me/gtablack

    На данном форуме запрещено публиковать контент нарушающий Российское законодательство, за это последует блокировка ФА.

Информация Что за язык Brainfuck?

Количество просмотров: 32

o_o

.
Редактор
Регистрация
23 Окт 2024
Сообщения
25
Реакции
2
Баллы
23
Brainfuck — один из известнейших эзотерических языков программирования, отличающийся особым минимализмом. Состоит из восьми команд, каждая из которых записывается одним символом.

Brainfuck был создан в 1993 году Урбаном Мюллером (Urban Müller), и авторская реализация остается фактическим стандартом языка. Его базовая спецификация достаточно проста, и он не был стандартизирован. Существует ряд любительских реализаций, ни одна из которых не представляет коммерческой ценности.

Brainfuck породил множество диалектов, отличающихся набором команд, способом их записи или деталями реализации, например, максимальным значением числа, хранящегося в ячейке, или ситуациями, вызывающими ошибку интерпретации.

Brainfuck был изобретен при попытке создать Тьюринг-полный язык программирования с наименьшим возможным компилятором. Авторский компилятор имел размер 240 байт, а более поздние реализации достигают менее 200 байт.

Теоретически Brainfuck действительно обладает свойством Тьюринг-полноты и следовательно, может выполнить любую задачу. На практике, впрочем, этот язык совершенно непригоден для решения задач из реальной жизни; выполнение даже простейших заданий становится вызовом для разработчика. Поэтому Brainfuck используется исключительно как математическая модель или для развлечения.

Создателя Brainfuck вдохновил язык FALSE, а его 6 команд (за исключением команд ввода-вывода) в точности совпадают с командами языка P”, но остается неизвестным, влиял ли последний на разработку Brainfuck.

Brainfuck использует модель машины, напоминающую машину Тьюринга и состоящую из следующих элементов:

программа — последовательность односимвольных команд языка и, возможно, других символов (при обработке игнорируются);
указатель инструкций — указывает на команду, которая будет исполнена на следующем шагу, после ее исполнения передвигается на другую (обычно следующую справа) команду;
память — моделируется одномерным массивом ячеек, в каждой ячейке хранится один байт; начальное значение ячейки — ноль;
указатель данных — указывает на текущую ячейку памяти; начальное значение — самая левая ячейка массива; по команде двигается либо изменяет значение, хранящееся в текущей ячейке;
потоки ввода и вывода — последовательности байтов в кодировке ASCII.

Все символы, кроме восьми командных, обычно игнорируются при обработке, так что комментарии, не содержащие этих символов, могут добавляться в любое место программы без ограничений.
 
Сверху Снизу