LINUX.ORG.RU

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

 , , ,


2

2

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

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

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

На скриншоте как раз вся цепочка: от исходника на С-подобном языке и до запущенного бинарника. Разумеется все как обычно под FreeBSD.

Что касается оформления, то это снова Fvwm3 c оформлением вот отсюда, в этот раз закос под UnixWare.

Кстати, это тот самый 16-летний Asus F3Ke, использованный для предыдущей истории. Начитавшись комментов, решил его немного модернизировать и вставил 1Тб SSD и новую батарею (на удивление их еще продают, но уже разумеется не оригинальные).

>>> Просмотр (1280x800, 1470 Kb)

★★★

Проверено: Poisoned ()
Последнее исправление: Poisoned (всего исправлений: 1)

Ответ на: комментарий от Exmor_RS

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

HE_KOT
()

Почитал. Я надеялся что сам транспилер тоже будет на bf, увы :(

mittorn ★★★★★
()

Узнал автора то посту.

sparkie ★★★★
()
Ответ на: комментарий от kirill_rrr

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

alex0x08 ★★★
() автор топика
Ответ на: комментарий от einhander

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

alex0x08 ★★★
() автор топика

В результате успешной сборки в каталоге ./target/debug появится бинарник bfc:

Понимаю. что вопрос не к ТС, но всеже..почему результат сборки в каталоге debug? У растоманов так принято?

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

Несчастный препод попросит при нем поправить в bf исходнике условие в цикле.

Kolins ★★★★
()
Ответ на: комментарий от Kolins

Понимаю. что вопрос не к ТС, но всеже..почему результат сборки в каталоге debug? У растоманов так принято?

Мой косяк, надо либо указать ключ –release и бинарник будет в ./target/release или его не указывать и по-умолчанию будет debug-версия в ./target/debug

Несчастный препод попросит при нем поправить в bf исходнике условие в цикле.

Сейчас же все удаленно сдают, преподам видят через Zoom только.

alex0x08 ★★★
() автор топика
Ответ на: комментарий от alex0x08

Сейчас же все удаленно сдают, преподам видят через Zoom только.

Привет из 2023. Удаленка закончилась, все ходят на работу/учебу как раньше.

Kolins ★★★★
()
Ответ на: комментарий от Kolins

Насколько я знаю, частично все равно удаленно обучаются, из-за повторных волн.

alex0x08 ★★★
() автор топика
Ответ на: комментарий от ivanich10

Да да, именно оно! В статью вставлю, чтоб боялись.

alex0x08 ★★★
() автор топика
Ответ на: комментарий от Mobutu_Sese_Seko

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

alex0x08 ★★★
() автор топика

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

Werenter ★★★
()

Вот еще несколько замечательных проектов (которые отрывают меня от работы):

Компилятор Brainfuck на Brainfuck:https://github.com/matslina/awib

Текстовый редактор ed на Brainfuck: https://github.com/bf-enterprise-solutions/ed.bf

Интерпретатор Brainfuck на Haskell: https://www.freshports.org/lang/hs-brainfuck

Отдельное IDE для Brainfuck: https://brainfuck-studio.itch.io/brainfuck-studio

alex0x08 ★★★
() автор топика
Ответ на: комментарий от ivanich10

Ого, уже 4 года прошло, а Артём всё так на декатронах комп и не собрал, да и на пневмоэлементы забил, компрессор у него слабоват.

mky ★★★★★
()

Отдельный респект за янтарный по черному, ностальгия, блин! :)

Я так и не понял, насколько мощны транспилеры? Как я понял, чего-то сложнее «hello, world» и, может быть, чистой функциональщины в духе твоей недавней ссылки про интерпретатор бинарных лямда-выражений, оттранслировать не получится?

gns ★★★★★
()
Ответ на: комментарий от alex0x08

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

gns ★★★★★
()

Какой-то мультик? А... вспомнил. Про профессора и двух роботов.

Mirage1_
()
Ответ на: комментарий от gns

«Защита путем за#бывания»? Ну даже не знаю ) Повторить даже банальный RSA будет непросто на такой штуке.

alex0x08 ★★★
() автор топика

А может хотите чтобы вас больше никогда не звали на интервью и все рекрутеры разом добавили ваши контакты во все возможные «черные списки»?

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

Посему в летнее время я профессиональный безработный, выживаю на зимних запасах круп и макарон, рыбку ловлю, ягоды собираю, грибы и травы (разные…), у нас в Бузулуке места знатные. Зато есть время на чтение книг и глубокое любование природой, в то время как многие спринты свои бегают, похрюкивая кабанчиком и потом ледяным обливаются, видя в ночных кошмарах просрочку платежа по ипотеке за каморку в человейнике. А в зимнее время, вот как сейчас, тружусь кочегаром в поселковой котельне и, кажется, обрел дзен.

XOXO
()
Последнее исправление: XOXO (всего исправлений: 1)

Я думал, ты прикалываешься по поводу Brainfuk…

Как называется программист на браенфаке? — Мозгоё… кхм, наркоман!

Текст жи есть!

Слющай, кампиляй жиесть! Мамай клянус!

mord0d ★★★★★
()
Ответ на: комментарий от XOXO

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

Звучит заманчиво, но ктож меня отпустит теперь ) Приходится работать.

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

alex0x08 ★★★
() автор топика
Ответ на: комментарий от mord0d

Остальное в списке - тоже не прикол если что.

alex0x08 ★★★
() автор топика
Ответ на: комментарий от alex0x08

мгновенно пропадает просле первого же опыта «с другой стороны стола»

Был со всех сторон стола и под столом тоже был…

Теперь предпочитаю вообще находиться «за бортом» и не являться на этот лицемерный корпоративный праздник жизни. У меня, со временем, появилась стойкая, въевшаяся неприязнь к корпоративной культуре, к слабоумным HR’кам, к бездарным руководителям, катающим людей на скрамоканбанах с кипиайями и бесконечных пустых дейлимитах, к корпоративным чатам и корпоративным праздникам, все это вызывает широкий спектр ощущений от грусти до тошноты.

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

всеми силами стараешься быть нормальным.

Мне подозрителен и сам типаж «нормального» менеджера или разработчика, такого лоснящегося холеного типа, от которого за километр веет нормальностью и бодростью, как-будто с утра ему поставили клизму крепкого кофе. Само по себе острое стремление казаться «нормальным» или «обычным» вызывает у меня глубокие обоснованные подозрения, ибо лицимерие, двуличность и мимикрия сейчас стали нормой жизни.

XOXO
()
Ответ на: комментарий от XOXO

Мне подозрителен и сам типаж «нормального» менеджера или разработчика

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

Социальный статус, попытки в доминантность и вертикальный рост,

Не нравится игра в общие социальные ценности? Тогда можно открыть для себя алкоголизм, начать общаться с бомжами на телпотрассах и постепенно деградировать. Это всегда просто.

Не нравится женский пол и социальные ритуалы? Добро пожаловать в зоофилию, любовь к мертвым и неодушевленным предметам.

Разумеется это куда более легкий путь. Но вот терпеть такого кадра в коллективе не будут, общество так не работает.

Вообщем не надо идти по пути девиаций в социальном плане, можно легко оказаться в баке с говном.

alex0x08 ★★★
() автор топика
Ответ на: комментарий от XOXO

Общий посыл разделяю где-то, сам близок к «в деревню, в глушь, в Саратов», но я скорее пресыщен и просто это надоело, чем искренне это всё ненавижу. И - с корпоративной шизой и айфонами в кредит реально так всё плохо было в жизни? Меня нигде, например, не дрочили корп.шизой ни в каком виде, да и коллег тоже. Корпоратив == несколько раз в год пожрать вкусно в офисе и под новый год пожрать в рестике за счёт конторы, почему нет? Ну, есть люди без интересов, которые себя нашли в охоте за новым айфоном и вот этим всем. Работают? Людей не убивают? Ко мне и моим близким не лезут? Ну и ладушки. Проигрываю иногда с таких знакомых из рекламы зубной пасты, которые после ипотек и айфонов все деньги сливают на поездки 3-4 раза в год дикарём во Вьетнам и прочие Индии, но... оно всё совершенно травоядное, там особо нечего ненавидеть.

yu-boot ★★★★
()
Ответ на: комментарий от alex0x08

Ну а как все эти обфускаторы работают? :) Оно может и не нужно нормальным людям, но в геймдеве распространено необычайно. Помню дело было в штатах. Пиали мы тогда софт для дорогущего сканера матриц, из которых потом микросхемы штампуют. Типа надо просканировать матрицу с нанометровой точностью и сравнить с исходным файлом (вектороной картинкой). Тип цена ошибки изготовления матриц очень большая. Цена установки — 20 лямов. Лицензия на софт на тот момент была по формальным причинам. Защита лицензии — старый юнксовый парольный crypt. Я удивился, чо это так? — А кто подделывать будет? Интел с Микроном? Я чуть подумал и ответил: — и действительно, нафига лучше-то?

gns ★★★★★
()
Ответ на: комментарий от gns

Ну да, это частая практика в кровавом энтерпрайзе. У какой-нибудь Websphere точно также забит болт на ввод лицезионного ключа, поскольку непростые люди и так купят. А простым она не нужна.

alex0x08 ★★★
() автор топика
Ответ на: комментарий от alex0x08

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

gns ★★★★★
()
Ответ на: комментарий от gns

Не очень понимаю зачем нужен regexp тем более честный в таком месте. Разве поиска подстроки не хватит? Можно звездочку использовать просто как указание на разделитель и проверять строку до и после на совпадения:

/usr/*/app/xxx/*/zzz/d 

в таком стиле можно и без regexp обойтись.

alex0x08 ★★★
() автор топика
Последнее исправление: alex0x08 (всего исправлений: 1)
Ответ на: комментарий от alex0x08

Там идея в том, что бы все стопицот путей с масками доступа объединить в один регекс алгоритмом Томсона, потом преобразовать это все в один автомат и валидировать пути максимально быстро. Как это делается в Драгонбуке написано, но придется делать примерно как ты сказал. Есть еще засада типа /home/me/* — все на один уровень и /home/me/** — на всю глубину.

gns ★★★★★
()
Ответ на: комментарий от gns

А какой смысл вообще в этом месте заморачиваться о скорости? Пути в любом случае будут не абстрактные все а один конкретный, полученный перед вызовом, если речь про POSIX-фукнции.

alex0x08 ★★★
() автор топика
Ответ на: комментарий от alex0x08

Есть у тебя правила примерно как в аппарморе:

  /{usr/,}bin/sh                        rmix,
  /{usr/,}bin/bash                      rmix,
  /{usr/,}bin/dash                      rmix,
  /{usr/,}bin/rm                        rmix, #deleting /tmp/psp1534203998 (printing to file)
  /usr/bin/bluetooth-sendto             rmPUx,
  /usr/bin/lpr                          rmPUx,
  /usr/bin/paperconf                    rmix,
  /usr/bin/gpgconf                      rmix,
  /usr/bin/gpg                          rmCx -> gpg,
  /usr/bin/gpgsm                        rmCx -> gpg,
  /usr/bin/gpa                          rix,
  /usr/bin/seahorse                     rix,
  /usr/bin/kgpg                         rix,
  /usr/bin/kleopatra                    rix,

И нужно проверить, open c такими флагами может открыть файл или -EACESS сразу?

Там идея в том, что бы все стопицот путей с масками доступа объединить в один регекс алгоритмом Томсона, потом преобразовать это все в один автомат и валидировать пути максимально быстро. Как это делается в Драгонбуке написано, но придется делать примерно как ты сказал. Есть еще засада типа /home/me/* — все на один уровень и /home/me/** — на всю глубину.

В твоей схеме все неплохо, хуже когда есть куча путе типа /usr/lib/lib<что-то>.so.<сколько-то>. Если есть один объединенный регекс, то ты просматриваешь первые 12 символов один раз, а потом попадаешь на нужную ветку или обламываешься сразу. А так тебе стопицот правил с одинаковым префиксом просматривать надо.

Ну, если не регексы, то префиксные деревья, тоже не сахар.

gns ★★★★★
()
Последнее исправление: gns (всего исправлений: 1)
Ответ на: комментарий от gns

Вообщем-то тут вариантов не 100500, думаю при реальной работе будет не больше 500, что спокойно обходится перебором в цикле.

«Premature optimization - roots of all evil» (ц)

alex0x08 ★★★
() автор топика
Ответ на: комментарий от alex0x08

Ну вот меня пытаются в том же убедить :) Я пока склоняюсь к тому же мнению.

gns ★★★★★
()
Ответ на: комментарий от Shadow

жалею, что не познакомился с прозаиком в 25

Думаю, все-же речь идет про флуоксетин, а не про литературу. Хотя… смотря с каким.

XOXO
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.