gifts2017

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

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

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

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

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

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

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

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

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

 

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

 

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

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

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

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

См. также

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


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

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

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

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