Brainfuck: Эзотерический язык программирования минимализма
Brainfuck
Brainfuck: эзотерический язык программирования с 8 командами. Turing-полный, но непрактичный – для вызова и развлечения программистов. Минимализм и сложность!
Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Содержание
Введение
Эзотерический, минималистичный язык программирования
Esoteric, minimalist programming language
Brainfuck — это эзотерический язык программирования, созданный в 1993 году Урбаном Мюллером. Язык примечателен своей крайней простотой: он состоит всего из восьми простых команд, указателя данных и указателя инструкций. Brainfuck является примером так называемого "Тьюринг-болота": на нём можно написать любую программу, но это непрактично, поскольку Brainfuck предоставляет настолько мало абстракций, что программы получаются очень длинными или сложными. Хотя Brainfuck является полным по Тьюрингу, он не предназначен для практического использования, а для того, чтобы бросить вызов и развлечь программистов. Brainfuck требует разбиения команд на микроскопические шаги. Название языка отсылает к сленговому выражению "brainfuck", обозначающему вещи настолько сложные или необычные, что они выходят за пределы понимания, поскольку он не предназначался для разработки реального программного обеспечения, а для проверки границ компьютерного программирования. Из-за нецензурного названия языка часто используются его заменители, такие как brainfsck, branflakes, brainoof, brainfrick, BrainF и BF.
Brainfuck is an esoteric programming language created in 1993 by Urban Müller. Notable for its extreme minimalism, the language consists of only eight simple commands, a data pointer and an instruction pointer. Brainfuck is an example of a so called Turing tarpit: it can be used to write any program, but it is not practical to do so, because Brainfuck provides so little abstraction that the programs get very long or complicated. While Brainfuck is fully Turing complete, it is not intended for practical use, but to challenge and amuse programmers. Brainfuck requires one to break commands into microscopic steps. The language's name is a reference to the slang term brainfuck, which refers to things so complicated or unusual that they exceed the limits of one's understanding, as it was not meant or made for designing actual software but to challenge the boundaries of computer programming. Because the language's name contains profanity, many substitutes are used, such as brainfsck, branflakes, brainoof, brainfrick, BrainF, and BF.
История
Мюллер разработал Brainfuck с целью создания максимально компактного компилятора, вдохновлённого 1024-байтным компилятором для языка программирования FALSE. Изначальный компилятор Мюллера был реализован на машинном коде и компилировался в бинарный файл размером 296 байт. Он опубликовал первый компилятор Brainfuck на Aminet в 1993 году. Программа сопровождалась файлом "Readme", в котором кратко описывался язык и читателям бросался вызов: "Кто сможет написать на нём что-нибудь полезное? :)". Мюллер также включил интерпретатор и несколько примеров. Вторая версия компилятора занимала всего 240 байт.
Müller designed Brainfuck with the goal of implementing the smallest possible compiler, inspired by the 1024 byte compiler for the FALSE programming language. Müller's original compiler was implemented in machine language and compiled to a binary with a size of 296 bytes. He uploaded the first Brainfuck compiler to Aminet in 1993. The program came with a "Readme" file, which briefly described the language, and challenged the reader "Who can program anything useful with it? :)". Müller also included an interpreter and some examples. A second version of the compiler used only 240 bytes.
П"
За исключением двух команд ввода-вывода, Brainfuck является незначительной вариацией формального языка программирования P′′, созданного Коррадо Бёмом в 1964 году, который явно основан на машине Тьюринга. Фактически, используя шесть символов, эквивалентных соответствующим командам Brainfuck +, , <, >, [, ], Бём предоставил явную программу для каждой из базовых функций, которые вместе позволяют вычислить любую вычислимую функцию. Таким образом, первые программы, подобные "Brainfuck", появились в статье Бёма 1964 года – и их было достаточно для доказательства полноты по Тьюрингу.
Except for its two I/O commands, Brainfuck is a minor variation of the formal programming language P′′ created by Corrado Böhm in 1964, which is explicitly based on the Turing machine. In fact, using six symbols equivalent to the respective Brainfuck commands +, , <, >, [, ], Böhm provided an explicit program for each of the basic functions that together serve to compute any computable function. So the first "Brainfuck" programs appear in Böhm's 1964 paper – and they were sufficient to prove Turing completeness.