Интерпретатор языка Brainfuck

Опубликовал Ilya Baykov (Ilyabaykov) в раздел Программирование - Практика программирования

Интерпретатор языка Brainfuck реализованный в виде обработки 1С.

В мире существует огромное количество языков програмирования.

Часто их делят по области применения - общего назначенения, например С, F# или Фортран, или специализорованные, созданные для решения контретных задач или сужествующие только в определенной среде, например X++ или язык 1С. 

Так-же языки делят по виду програмирования:

  • Объектно-ориентированные (С++,  Simula)
  • Структурные (Бейсик, Фортран)
  • Декларативные (SQL)
  • Логические (Пролог)
  • Функциональные (Haskell, OCaml, F#, Lisp)
  • Императивные (Си, Модула)

Но есть языки, не имеющме практического применения, но тем не менее имеющие право на существования, один из самых известных таких языков и предлагается вашему вниманию:) 

Эзотерический язык програмирования Brainfuck. К несомненным достоинствам языка необходимо отнести его синтаксис, состоящий всего из 8 команд, при этом каждая команда кодируется всего одним символом.

 

Команда Brainfuck Описание команды
>   перейти к следующей ячейке памяти
<   перейти к предыдущей ячейке памяти
+   увеличить значение в текущей ячейке на 1
-   уменьшить значение в текущей ячейке на 1
.   ввести значение из текущей ячейки
,   ввести извне значение и сохранить в текущей ячейке
[   начало цикла, если значение текущей ячейки нуль, перейти вперёд по тексту программы на ячейку, следующую за соответствующей ]
]   окончание цикла, если значение текущей ячейки не нуль, перейти назад по тексту программы на символ [

 

Программа на языке Brainfuck, печатающая «Hello World!»:
 ++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++
 .>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.
 ------.--------.>+.

 Не спрашивайте зачем это надо, захотелось :)

Скачать файлы

Наименование Файл Версия Размер
Brainfuck
.epf 13,45Kb
27.08.13
2
.epf 13,45Kb 2 Скачать

См. также

Комментарии
1. Сергей Куликов (ksvd) 27.08.13 17:03 Сейчас в теме
Не понял, публикация в разделе =В центре внимания=, а ни одного комментария.
нормальный такой; +1 Ответить 1
2. Александр Зубцов (iov) 360 27.08.13 17:21 Сейчас в теме
1000 символов кода и возглас программиста
лять я в условии ошибся
sdwggg; Kuzja_R; +2 Ответить
3. andrewks 1193 27.08.13 17:36 Сейчас в теме
Не спрашивайте зачем это надо, захотелось :)


блин, только захотел спросить, зачем, и прочитал это :(
4. artur rakhmatulin (нормальный такой) 83 27.08.13 23:17 Сейчас в теме
(1) ksvd, просто кто бы понимал зачем это и что это ))

ну раз автор говорит - "захотелось"
против лома не приема))

можно загадки на собеседовании задавать, мол напишите "preved medved" на брэйфаке
+ будет считаться хоть какая то попытка))
5. Анатолий Бычин (tolyan_ekb) 87 28.08.13 08:39 Сейчас в теме
Почему нет комментариев к представленному коду? Это же не есть хорошо.
Созинов; +1 Ответить
6. Сергей Середин (ssn5810) 50 28.08.13 08:43 Сейчас в теме
все может случится в этом МИРЕ
7. Сергей Кузьменко (serkus) 28.08.13 08:49 Сейчас в теме
8. Serj (Serj1C) 461 28.08.13 09:02 Сейчас в теме
Хорошо было бы поставить ОбработкуПрервыванияПользователя() для случая бесконечного цикла
9. Данила Елистратов (CagoBHuK) 25 28.08.13 11:26 Сейчас в теме
Плюсик просто за то, что мыслишь нестандартно. http://www.rsdn.ru/article/philosophy/languages.xml - для дальнейшего познания. Еще вот: http://www.xappsoftware.com/wordpress/2011/10/02/brainfuck-for-arduino/
10. Ilya Baykov (Ilyabaykov) 112 28.08.13 12:20 Сейчас в теме
(9) CagoBHuK, Отличные ссылки, спасибо :)
11. Ilya Baykov (Ilyabaykov) 112 28.08.13 12:27 Сейчас в теме
(7) serkus, Ну не все-же работать, можно иногда и фигней пострадать.
Сам язык придумал не я, но как-то наткнулся на его описание скачал интерпретатор и понял что без отладчика не могу и двух строчек написать и вот интерпретатор с возможностью пошагового выполнения перед вами.
12. Дмитрий Кишкин (DmitryKishkin) 28.08.13 13:23 Сейчас в теме
Прочитал заголовок статьи - подумал, что это теперь официальное название языка 1С... ;-)
13. Сергѣй Батанов (baton_pk) 204 28.08.13 13:51 Сейчас в теме
<зануда>И за это люди рейтинг получают...</зануда>
Видал я мастеров брэйнфака, загадочные парни... Даёшь Снегофак с контекстной подсказкой и анализатором кода!
adhocprog; Evil Beaver; +2 Ответить
14. Андрей Сябренко (AzagTot) 36 28.08.13 22:19 Сейчас в теме
Где язык Brainfuck используется?
Приведите, пожалуйста, примеры практического применения.
15. Александр Синцов (Sintson) 333 29.08.13 09:42 Сейчас в теме
Мусье знает толк в извращениях! ;)
16. Сергѣй Батанов (baton_pk) 204 29.08.13 10:53 Сейчас в теме
(15) Sintson, мусье-то, видимо, только вступил во "взрослую жизнь".
Толк вот тут: http://habrahabr.ru/search/?q=brainfuck

(Да простят меня модераторы за ссылку)
Evil Beaver; +1 Ответить
17. Ilya Baykov (Ilyabaykov) 112 29.08.13 11:35 Сейчас в теме
(15) Sintson, Brainfuck это цветочки, а вы попробуйте на Malbolge что-нибудь написать :)
18. Ilya Baykov (Ilyabaykov) 112 29.08.13 11:58 Сейчас в теме
(14) AzagTot, ну вообще эзотерические языки не предназначены для практического использования.
Язык brainfuck был вдохновлен языком FALSE, который в свою очередь основан на вполне нормальном языке Forth но спроектирован так, что-бы компилятор занимал не более 1024 байт. Самый маленький компилятор для brainfuck занимает 166 байт. Так-же стоит сказать, что brainfuck при бесконечном количестве ячеек памяти имеет тьюринговскую полноту.
19. Александр Федоров (Sasha255n) 29.08.13 12:15 Сейчас в теме
Да очень любопытная вещь
20. Андрей Овсянкин (Evil Beaver) 3901 31.08.13 19:22 Сейчас в теме
Чем бы дитя ни тешилось, лишь бы доработки типовых не делало на brainfuck
21. Владимир Гусев (adhocprog) 1087 04.09.13 15:32 Сейчас в теме
Улыбнуло )
По-моему, "ничего не делать" полезнее, чем программировать на Brainfuck'е :)
22. Ilya Baykov (Ilyabaykov) 112 04.09.13 16:35 Сейчас в теме
(21) adhocprog, лучший отдых - это смена деятельности :)
23. Владимир Гусев (adhocprog) 1087 04.09.13 16:46 Сейчас в теме
24. Валентин Бомбин (so-quest) 123 03.10.13 23:46 Сейчас в теме
:) осталось только автоматический перевод кода из 1с в брейнфак сделать (а лучше в вайтспейс) - и никаких защит будет не надо :)
открываеь код модуля а там только плюсики :)
Оставьте свое сообщение