Как стать автором
Обновить
34.67

Brainfuck *

Эзотерический язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

Интерпретатор Brainfuck на Brainfuck

Уровень сложности Сложный
Время на прочтение 25 мин
Количество просмотров 11K

Когда-то давно, году в 2013-м, на глаза мне попался следующий код:

>>>+[[-]>>[-]++>+>+++++++[<++++>>++<-]++>>+>+>+++++[>++>++++
++<<-]+>>>,<++[[>[->>]<[>>]<<-]<[<]<+>>[>]>[<+>-[[<+>-]>]<[[
[-]<]++<-[<+++++++++>[<->-]>>]>>]]<<]<]<[[<]>[[>]>>[>>]+[<<]
<[<]<+>>-]>[>]+[->>]<<<<[[<<]<[<]+<<[+>+<<-[>-->+<<-[>+<[>>+
<<-]]]>[<+>-]<]++>>-->[>]>>[>>]]<<[>>+<[[<]<]>[[<<]<[<]+[-<+
>>-[<<+>++>-[<->[<<+>>-]]]<[>+<-]>]>[>]>]>[>>]>>]<<[>>+>>+>>
]<<[->>>>>>>>]<<[>.>>>>>>>]<<[>->>>>>]<<[>,>>>]<<[>+>]<<[+<<
]<]

Это интерпретатор языка Brainfuck, написанный на самом Brainfuck. Ссылки на оригинал у меня не осталось, только код, так что автора я назвать не смогу.

Мне всегда было безумно интересно узнать, как он работает. И теперь я решил наконец-то это сделать!

Читать далее
Всего голосов 111: ↑109 и ↓2 +107
Комментарии 20

Новости

Сказ о том, как я интерпретатор Brainfuck'а писал

Время на прочтение 3 мин
Количество просмотров 2.1K

Рассказываю о том, как писал интерпретатор языка Brainfuck на Python (с показом исходного кода и его объяснения).

Читать далее
Всего голосов 8: ↑3 и ↓5 -2
Комментарии 12

Звучащий код — пишем музыку на языке ByteBeat

Уровень сложности Средний
Время на прочтение 3 мин
Количество просмотров 8K

Дорогой Хабр, через два месяца мне предстоит организовать и провести фестиваль компьютерного искусства, поэтому я уже сейчас собираю информацию про необычные проявления демосцены, на которые обычно никто не обращает внимания. Язык программирования для генеративной музыки ByteBeat — это как раз то, что я ищу.

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

Послушать пример из заглавной картинки: [sarpnt][greggman]

Читать далее
Всего голосов 25: ↑25 и ↓0 +25
Комментарии 13

Ломаем хаскелем Brainfuck

Уровень сложности Сложный
Время на прочтение 28 мин
Количество просмотров 9.9K

Немного о bfc


Brainfuck — очень глупый язык. Там есть лента из 30к ячеек, по байту каждая. Команды bfc это:


  • Передвижение по ленте влево и вправо (символы < и >)
  • Увеличение и уменьшение значения в ячейке (символы + и -)
  • Ввод и вывод текущей ячейки (символы . и ,)
  • И цикл while, который продолжается пока значение в текущей ячейке не ноль. [ и ] это начало и конец цикла соответственно

Программировать на bfc сложно. Но, как известно, любую проблему можно решить добавлением слоя абстракции (кроме проблемы большого количества абстракций).

Читать дальше →
Всего голосов 84: ↑84 и ↓0 +84
Комментарии 17

Истории

Пневмоника и процессор постапокалипсиса

Время на прочтение 11 мин
Количество просмотров 15K

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

Удивительно, но струйная логика используется не только в ракетных двигателях или газодинамических подшипниках, но и в бытовых газовых счётчиках. Совершенно случайно я наткнулся на пост «Внутренности газового счётчика» на Пикабу и увидел своих старых знакомых. «Ребята, а что вы тут делаете?», — подумал я и понял: время пришло.
Читать дальше →
Всего голосов 130: ↑129 и ↓1 +128
Комментарии 39

Проектируем процессор постапокалипсиса с помощью openSource

Время на прочтение 12 мин
Количество просмотров 21K

Проектируемый компьютер на сверхминиатюрных электронных лампах хоть и является радиационно-стойким, однако работает на электричестве. Кроме того, восстановить в сжатые сроки производство электронных ламп в условиях постапокалипсиса будет довольно сложной задачей. На руинах цивилизации гораздо проще организовать массовое производство логических элементов, работающих на эффекте прилипания струи воздуха к стенке — при этом сам элемент можно лепить хоть из глины! И мало того, что для создания потока воздуха не обязательно использовать электричество — теоретически такой процессор сможет работать на энергии ударной волны ядерного взрыва! Но обо всём по порядку. Для тех, кто следит за проектом DekatronPC — не пугайтесь, ему ничего не угрожает.

В прошлый раз в статье «Пневмоника и влажные мечты стимпанка» я уже рассказывал о струйных логических элементах и поделился мыслями о том, что в принципе на этой технологии можно собрать полноценное вычислительное устройство.
Читать дальше →
Всего голосов 156: ↑156 и ↓0 +156
Комментарии 70

Мой маленький триод: Ламповая ЭВМ — это магия

Время на прочтение 25 мин
Количество просмотров 24K
Экспериментальная 3U декатронная ячейка. Модуль декатрона А103 со схемой шифратора и переноса

Пришло время возобновить славную традицию ежегодного первоапрельского дайджеста по моим безумным вычислительным проектам. В прошлой трилогии [1], [2], [3] я рассказывал про создание де-факто самого быстрого в мире релейного компьютера BrainfuckPC. После трёх лет раздумий я наконец-то готов начать активную фазу строительства уникальной ламповой ЭВМ с кодовым названием DekatronPC.
Читать дальше →
Всего голосов 112: ↑112 и ↓0 +112
Комментарии 49

«Как же он меня бесит!»: Почему нас раздражает ЭТО в других людях

Время на прочтение 6 мин
Количество просмотров 23K

Александр Н. (37 лет) очень внимателен к соблюдению правил и выполнению общественных норм. Если кто-то нарушает правила дорожного движения или паркуется на газоне, Александр буквально взрывается, делает замечания, кричит. Несоблюдение правил моментально заводит его, выводит из себя, он переходит на агрессивный тон, демонстрирует нетерпимость. Ольга С. (29 лет) настолько же сильно нетерпима к беспорядку, не переносит, когда люди не убирают за собой посуду, дети разбрасывают игрушки, а муж не кладет на место пульт. При этом Ольгу совсем не «триггерит» нарушение правил и общественных норм, а Александр терпим к немытой посуде. А вот Олег К. (41 год) не выносит «выскочек» - тех, кто что-то из себя возомнили, хотя у них нет ни докторских степеней, как у Олега, ни диссертаций. А «выскочка» вот пользуется популярностью, люди за ним следят и читают, смотрят YouTube-канал, хотя этот «выскочка» полный профан в своем вопросе! То ли дело сам Олег! У Александра, Ольги и Олега (имена изменены, но случаи эти реальны – из моей частной психологической практики) разные триггеры и ситуации, которые их выводят из себя, но у них есть нечто общее. Я приглашаю вас разобраться в данном вопросе и выяснить, почему именно ЭТО триггерит вас, а другое – нет.

Триггер  - спусковой крючок, тот факт/событие/поведение/человек – который вызывает бурную эмоциональную реакцию. Например, Александр Н. осуждает убийц и воров, он считает их плохими людьми, заслуживающими наказания. Но они его не триггерят. Сильно бесят, до желания бить их и обзывать именно те, кто нарушает нормы общественного порядка. Это – его триггер. Странно, да? Ведь убийца гораздо хуже того, кто припарковался на газоне...

Читать далее
Всего голосов 47: ↑29 и ↓18 +11
Комментарии 35

Только добровольцы — шаг вперед

Время на прочтение 2 мин
Количество просмотров 2.8K

Только добровольцы — шаг вперед!


Нужно провести разведку боем


В продолжение темы управляемого обучения ищем единомышленников для испытаний этого способа машинного обучения: разработчиков, потенциальных заказчиков, инвесторов — кто готов потратить некоторое время на изучение и эксперименты.
Читать дальше →
Всего голосов 12: ↑8 и ↓4 +4
Комментарии 3

Почта на «малинке»

Время на прочтение 4 мин
Количество просмотров 8.4K

Проектирование


Почта, почта… «В настоящее время любой начинающий пользователь может завести свой бесплатный электронный почтовый ящик, достаточно зарегистрироваться на одном из интернет-порталов», — утверждает Википедия. Так что запуск для этого своего почтового сервера — это немного странно. Тем не менее, я не жалею о потраченном на это месяце, считая со дня установки ОС до дня отправки первого письма адресату в интернете.
Читать дальше →
Всего голосов 12: ↑6 и ↓6 0
Комментарии 3

Мои маленькие реле: Тройной Brainfuck, или что такое безумие

Время на прочтение 13 мин
Количество просмотров 28K

Рис.1: Релейный компьютер BrainfuckPC на фоне его автора

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

В прошлых сериях:


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

Под катом звенящие релейные блоки, самые быстрые в мире вычисления на реле, монтаж накруткой, вакуумные индикаторы, и многое другое.
Всего голосов 114: ↑112 и ↓2 +110
Комментарии 49

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн

Аналитика девушек с низкой социальной ответственностью (Заряжено Power BI, Qlik Sense, Tableau)

Время на прочтение 6 мин
Количество просмотров 124K

Кто мы такие и какие были предпосылки проекта?


Добрый день, меня зовут Лазарев Владимир, я руководитель BI-интегратора Аналитикс Групп. Мы делаем для бизнеса наглядные отчёты по маркетингу, продажам, финансам, логистике на базе ведущих аналитических платформ Qlik Sense, Power BI, Tableau.

В BI платформах очень важна визуальная составляющая. Если вы посмотрели десятки демо-отчетов BI-систем и вам не нравится как выглядит та или иная платформа, то скорее всего вы ее не будете внедрять, даже если вас устраивает цена и технические характеристики. Исходя из этого рождается необходимость увидеть одни и те же данные в разных аналитических платформах, чтобы можно было сопоставить.

И желательно, чтобы данные были интересными… :-)

Откуда появилась идея сделать этот отчёт?


Несколько лет назад Высшая школа экономики опубликовала статью о формировании цен на услуги девушек низкой социальной ответственности в Москве. Это были агрегированные данные анализа 1.800 анкет. Нам показались интересными данные, которые стоят за этими выводами социологов ВШЭ. И мы решили проработать эту тематику.
Читать дальше →
Всего голосов 171: ↑139 и ↓32 +107
Комментарии 165

Как работает Zig?

Время на прочтение 20 мин
Количество просмотров 12K
От переводчика: этот пост был опубликован в блоге автора 15 марта 2018 года. Так как язык развивается, в настоящее время его синтаксис может отличаться. Всё описанное относится к Zig 0.2.0, текущая версия языка — Zig 0.3.0.

Я связался с автором поста, и он любезно предоставил ссылку на репозиторий с актуальной версией исходников проекта на Zig 0.3.0

Здравствуйте! Давайте напишем интерпретатор Brainfuck! «Зачем?» — можете спросить вы, но вы не найдёте здесь ответа.

Я сделаю это на Zig.

Zig — это….


…новый язык программирования. Он пока в бета-версии, и быстро развивается. Если вы видели код на Zig раньше, код в этом посте может показаться вам немного другим. Он действительно другой! Zig 0.2.0 только что вышел, совпав с релизом LLVM 6 несколько недель назад, и включает в себя множество изменений синтаксиса и общие усовершенствования языка. Главным образом, многие «заклинания» были заменены ключевыми словами. Смотрите здесь для более глубокого объяснения всех изменений!

Zig разработан, чтобы быть читаемым, и относительно интуитивным для тех, кто знаком с компилируемыми и типизированными языками, такими, как C, C++, и, в некоторых моментах, Rust.

Код был скомпилирован и протестирован с Zig 0.2.0, который доступен прямо сейчас, по различным каналам, включая homebrew, если вы на OSX: brew install zig.
Читать дальше →
Всего голосов 26: ↑25 и ↓1 +24
Комментарии 6

Написание собственной работоспособной ОС за полгода

Время на прочтение 4 мин
Количество просмотров 88K
image

Предыстория


Здравствуйте! Всех категорически приветствую, сегодня хотел бы рассказать Вам о своём опыте написание работоспособной ОС под архитектуру x86.

Как-то весенней ночью у меня родилась гениальная идея — попробовать себя в написании собственной ОС, которая может позволить запускать программы, работать с устройствами, да и в общем выжимать всю мощь из Intel'овской архитектуры в своих нуждах: к примеру, для своей фабрики или чего-либо иного. Моей целью было и есть написание такой ОС, которая могла бы позволить максимальную производительность для каких-то конкретных задач, не тратя процессорное время на всяческие излишества. В основном я преследую лишь спортивный интерес, получение опыта для себя в системном программировании и написания драйверов для устройств, которые используются повсеместно. Что из этого вышло — решать вам, сразу говорю, что не надо писать комментарии про создание собственного дистрибутива линукса, и преследовал интерес написать всё «From scratch» — с нуля, дабы хорошо погрузиться в тему ОСдева. Сразу хочу выразить огромную благодарность Бенджамину Лунту и форуму OSDev, так же как их Вики. Бен помог мне разобраться с EHCI, что несомненно внесло огромный вклад в мою ОС — USB устройства, они везде! Так же передо мной стояла задача создать собственную архитектуру, удобную мне, не исключая использование стандартов ELF-файлов.
Читать дальше →
Всего голосов 196: ↑187 и ↓9 +178
Комментарии 207

Мой первый компилятор на LLVM

Время на прочтение 4 мин
Количество просмотров 24K
Это руководство посвящено написанию простейшего компилятора на LLVM. Никакой предварительной подготовки не требуется.



Входным языком нашего компилятора будет BF. Это классический «игрушечный» язык для компиляторов, и даже есть компилятор BF в примерах к LLVM! В этом посте я приведу процесс написания компилятора с пояснениями.
Читать дальше →
Всего голосов 37: ↑35 и ↓2 +33
Комментарии 11

Самые неординарные языки программирования

Время на прочтение 36 мин
Количество просмотров 68K


Признаться честно единственная моя связь с программированием в том, что мой брат программист, ну еще я в школе учил Pascal. Однако, я полностью осознаю всю сложность и красоту программирования. Создать программу, код которой не будет содержать «мусора», достойно похвалы. Что уж говорить о создании самого языка, на котором и пишутся программы. Проще говоря — это сложно, чертовски сложно. И, значит, это должно быть обдуманно и нести какой-то смысл. Но не всегда. Сегодня мы с вами вместе приподнимем брови в удивлении, ознакомившись с самыми нелепыми и смешными языками программирования. Поехали.
Читать дальше →
Всего голосов 36: ↑24 и ↓12 +12
Комментарии 30

Язык Terra — низкоуровневый партнёр Lua

Время на прочтение 12 мин
Количество просмотров 17K
Terra — низкоуровневый язык системного программмирования, встраиваемый и имеющий возможность метапрограммирования с помощью языка Lua.

Читать дальше →
Всего голосов 57: ↑57 и ↓0 +57
Комментарии 28

Ещё один интерпретатор Brainfuck

Время на прочтение 3 мин
Количество просмотров 22K

Brainfuck — язык программирования, созданный с одной целью: написать для него интерпретатор. Их было написано так много, что даже не буду давать на них ссылки. В этой статье на пальцах объясняется простой, но эффективный способ его оптимизации.


quine


Читать дальше →
Всего голосов 28: ↑25 и ↓3 +22
Комментарии 11

Вклад авторов