Обновить

Brainfuck *

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

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

Пишем трассировщик лучей на Brainfuck

Время на прочтение9 мин
Охват и читатели12K

В процессе подготовки к соревнованиям по системному программированию на C++ я начал заново изучать CMake, потому что Cargo сильно меня избаловал. При этом я заметил в туториале интересное утверждение:

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

CMake Language Fundamentals

Я раньше писал трассировщик лучей и переписывал его под GPU, поэтому это заявление привлекло моё внимание и заставило задуматься, на каком же ещё языке лучше писать такой трассировщик.

Для последней версии я писал код, почти не связанный с базовыми алгоритмами и в основном зависевший от довольно сложного набора API. Поэтому я выбрал самый простой из известных мне языков — Brainfuck, ведь простота языка очевидным образом приводит к созданию простой кодовой базы. На самом деле, кодовые базы на BF обычно состоят всего из нескольких строк. Кроме того, комментарий Урбана Мюллера в README заставил меня написать контрпример.

Код выложен на Github.

Читать далее

Новости

Блез Агуэра‑и-Аркас о возникновении репликации и вычислений в Brainfuck (интервью)

Время на прочтение62 мин
Охват и читатели13K

Чтобы понять, как на Земле возникла жизнь, приходится обращаться к вопросам химии, геологии, планетологии, физики и других наук. Но есть и более общий вопрос: каким образом случайные процессы приводят к появлению организованных, самовоспроизводящихся систем, способных хранить и передавать информацию? Этот вопрос можно исследовать в идеализированном мире компьютерного кода: задать в качестве начальных условий случайные последовательности и просто позволить системе развиваться дальше.

Если запустить множество таких случайных систем и позволить им мутировать и взаимодействовать друг с другом, возникнут ли в итоге “жизнеподобные”, самовоспроизводящиеся программы? Новая статья Блеза Агуэра-и-Аркаса и его соавторов показывает, что ответ, по-видимому, положительный. Это поднимает интересный вопрос: не является ли вычисление аттрактором в пространстве соответствующих динамических процессов? Если это так, последствия могут быть весьма существенными для нашего понимания происхождения жизни и того, насколько широко она распространена во Вселенной.

Блез Агуэра-и-Аркас получил степень бакалавра физики в Принстонском университете. В настоящее время он занимает должность вице-президента по инженерным разработкам в Google, руководит командой Cerebra и входит в команду Paradigms of Intelligence. Он автор книг Ubi Sunt и Who Are We Now?, а также готовящейся к выходу книги What Is Intelligence?

Вступление

ведущий (Шон Кэрролл): Всем привет и добро пожаловать в подкаст Mindscape. Сегодня у нас ситуация из разряда “есть хорошая новость и плохая”. Плохая новость в том, что в этом выпуске будет нецензурная лексика. Не потому, что мы вдруг решили особенно грубо выражаться или ругаться, а потому, что будем обсуждать компьютерные симуляции, написанные и запущенные на языке под названием Brainfuck. Прошу прощения у тех, кого может задеть такое название, но это вполне реальный язык программирования, и он действительно называется Brainfuck. Поэтому слово Brainfuck нам сегодня придется повторять снова и снова. Собственно, поэтому я произношу его уже сейчас - чтобы вы успели привыкнуть и знали, чего ожидать.

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

Читать далее

Как я за выходные научил ИИ материться по команде, а потом превратил его в кота

Время на прочтение10 мин
Охват и читатели6.5K

Лонгрид про то, как ломается крошечная LLM, почему «первый токен решает всё», и как метрика дважды наврала мне в лицо

Читать далее

Часть I. Конечные автоматы. Универсальная машина Тьюринга. Интерпретатор Brainfuck

Уровень сложностиСредний
Время на прочтение92 мин
Охват и читатели15K

▒▒▒▒▒▒▒▒▒█▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█
▒▒▒▒▒▒▒█░▒▒▒▒▒▒▒▓▒▒▓▒▒▒▒▒▒▒░█
▒▒▒▒▒▒▒█░▒▒▓▒▒▒▒▒▒▒▒▒▄▄▒▓▒▒░█░▄▄
▒▒▄▀▀▄▄█░▒▒▒▒▒▒▓▒▒▒▒█░░▀▄▄▄▄▄▀░░█
▒▒█░░░░█░▒▒▒▒▒▒▒▒▒▒▒█░░░░░░░░░░░█
▒▒▒▀▀▄▄█░▒▒▒▒▓▒▒▒▓▒█░░░█▒░░░░█▒░░█
▒▒▒▒▒▒▒█░▒▓▒▒▒▒▓▒▒▒█░░░░░░░▀░░░░░█
▒▒▒▒▒▄▄█░▒▒▒▓▒▒▒▒▒▒▒█░░█▄▄█▄▄█░░█
▒▒▒▒█░░░█▄▄▄▄▄▄▄▄▄▄█░█▄▄▄▄▄▄▄▄▄█
▒▒▒▒█▄▄█░░█▄▄█░░░░░░█▄▄█░░█▄▄█

Я практик и популяризатор языково-ориентированного программирования [1]. В нём задачи решают тройкой: доменная виртуальная машина VM, доменный язык программирования DSL и алгоритмы на нём.
В этом курсе удачными фрагментами разных заметок доступно объясним причины многообразия языков и преимущества их разработки. С теорией, историей и примерами.
Вся наша работа строится вокруг VM, DSL, EBNF, отношений и графов. Мы увидим, как эти объекты соединяют вместе, получая вычислители и программы.

Читать далее

Конвертация старых физических серверов в виртуалки (часть 1)

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели14K

Несмотря на то, что на дворе уже 2025 год, и, казалось бы уже все давным давно держат свои вычислительные ресурсы (сервера) в облаке или, как минимум, в виде виртуальных машин, я оказался в ситуации, что мне нужно конвертировать 2 физических лаб сервера в виртуальные машины:

Читать далее

Brainfuck-калькулятор: Как я создал вычислительную машину на эзотерическом ЯП и не сошел с ума

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели8.4K

Привет, Хабр! Когда-то совсем недавно я, (пока что) зеленый джун, узнал о таком интересном языке, как Brainfuck. Даже не языке, а так, "язычке", с 8 командами. 8-битные лимиты чисел (т.е. не может обрабатывать числа больше 255), а синтаксис и процесс кодинга такой, что и тимлид там ногу сломит. Увидев сие чудо 1993 года (динозавер), меня постигла безумнейшая идея провести один веселый вечер за компов, породив полноценный калькулятор, использовав BF-код для вычислительных мощей в своей забавной разработке. Но сначала давайте по порядку...

Читать далее

Уменьшил синтаксис Си ради 15 байт

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели13K

Скучая на очередном уроке биологии я вспомнил о таком прекрасном творении как brainfuck и о его интерпритаторах...

Вернувшись домой я нашел самый маленикий среди интерпритаторов:

Читать далее

The role of microinteractions and small details in UX design

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели690

Microinteractions play a huge role in UX design despite being labelled “micro”. They include all the small details you can find in a software product, i.e. animations, emotive reactions, clicks, vibrations, etc. Not only do they make it more interesting and joyful for users to interact with a product, they also help ease the navigation process and make it more intuitive by providing important information. Which types of microinteractions can be used in apps, what makes them a vital part of software products, how to implement them correctly and which common mistakes to avoid when designing small details? 

Types of microinteractions

Читать далее

О том как я генератор Brainfuck кода писал

Уровень сложностиСредний
Время на прочтение39 мин
Охват и читатели3.5K

Разбираемся в Brainfuck, Пишем для него генератор кода и интерпретатор

Или рассказ о том, как я решал легкую C задачку

Однако я решил что решать эту задачу привычным методом будет скучно и я решил слегка усложнить себе задачу, чтобы поинтереснее было. Так и появилась идея написать этот код на brainfuck, а на C интерпретатор для него.

Естественно делать это голыми руками будет больно и не приятно, поэтому я решил написать генератор brainfuck кода на Java.

Читать далее

Профессиональная разработка на Brainfuck

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели19K

Хотите довести до дурки любимого преподавателя компьютерных наук или навсегда прослыть «особенным» среди коллег сразу после (немедленного) увольнения?

Читайте про патентованный метод.

Читать далее

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

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

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

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

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

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

Читать далее

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

Время на прочтение3 мин
Охват и читатели3.4K

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

Читать далее

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

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

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

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

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

Читать далее

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

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

Время на прочтение11 мин
Охват и читатели21K

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

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

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

Время на прочтение12 мин
Охват и читатели24K

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

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

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

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

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

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

Время на прочтение6 мин
Охват и читатели30K

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

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

Читать далее

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

Время на прочтение2 мин
Охват и читатели3K

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


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


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