Brainf*ck в железе

Печатные платы, программируемая логика, разработка и изготовление аппаратуры

Moderator: Shaos

Стоит ли заморачиваться?

Да
3
50%
Нет
3
50%
 
Total votes: 6
LesnikSBR
Junior
Posts: 5
Joined: 26 Jul 2011 00:45
Location: 109.106.155.21

Brainf*ck в железе

Post by LesnikSBR »

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

В общем, предлагаю затею - Brainfuck в железе.

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

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

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

Суть конструкции:
1) Лента программы - перфолента с 9 рядами для дырок(8 рядов - команды, 9-я - несущая для определения положения на ленте)
2)считыватель - электромеханический, с контактными язычками(либо оптопарами, но это мажорство)) ) для определения какая команда в данный момент на ленте.
3) ячейка памяти - колесо, кромка которого разделена на 256 секций с наклеенными на них изображениями из кодовой страницы символов.
4)блок памяти - это множество таких колес, нанизанных на общую ось. колеса спрятаны под кожухом, а на лицевой стороне окошко - в него колеса выглядывают одним символом(соответствующим "числу", находящемуся в этот момент в "памяти")
5)каждое колесо оборудовано контактной группой, которая замыкается в нулевом положении колеса, для определения этого положения.
6)головка-указатель, передвигающаяся по рельсам вдоль блока памяти по командам ">" и "<". на головке установлен прижимной ролик, который может проворачивать колеса памяти по командам "+" и "-"
7)встречая команду "," выполнение программы прерывается, на головке загорается лампочка, указывающая что в ячейку нужно ввести данные(повернуть колесо рукой), после чего нажать кнопку, сдвигающую ленту программы вперед и тем самым продолжающую выполнение.
8)встречая команду ".", выполнение так же прерывается и загорается другая лампочка, с целью показать человеку содержимое ячейки. выполнение продолжается той же кнопкой.
9)встречая команду "[", и обнаружив замыкание контактов 0 положения текущего колеса(ответный контактный язычок можно расположить на головке, а все колеса запитать общим через ось) - считыватель (2) начинает прокручивать программу вперед, игнорируя команды, до соответствующего "]". соответствующая "]" ищется при помощи счетчика - отдельного колеса с контактными язычками для нулевого положения. встречая "[" - колесо проворачивается в одну сторону(увеличивая содержимое счетчика), а "]" - в обратную, до тех пор пока язычки снова не сомкнутся.
10)встречая команду "]" и ненулевое положение текущего колеса, считыватель начинает отлистывать программу в обратном направлении до соответствующей скобки, ища ее описанным выше способом.

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

логику реакции на контактные язычки лучше собрать на реле, будет прикольно щелкать да и без транзисторов более исторично)) для точного позиционирования головки, колес, и пр. подвижных частей есть мысль использовать дополнительные контактные язычки. (Идеал конечно шаговые двигатели, но тогда надо будет и управление к ним, и логику электронную и т.п., а это немножко нарушает концепт)
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Brainf*ck в железе

Post by Lavr »

LesnikSBR wrote:Извините если ошибся разделом, но более подходящего форума для этой идеи не нашел.
Идея вертится в голове очень давно, но вечно то одно, то другое отвлекает от ее реализации. Может, кого-нибудь заинтересует и он возьмется за изготовление девайса))

В общем, предлагаю затею - Brainfuck в железе.

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

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

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

Суть конструкции:
1) Лента программы - перфолента с 9 рядами для дырок(8 рядов - команды, 9-я - несущая для определения положения на ленте)
2)считыватель - электромеханический, с контактными язычками(либо оптопарами, но это мажорство)) ) для определения какая команда в данный момент на ленте.
3) ячейка памяти - колесо, кромка которого разделена на 256 секций с наклеенными на них изображениями из кодовой страницы символов.
4)блок памяти - это множество таких колес, нанизанных на общую ось. колеса спрятаны под кожухом, а на лицевой стороне окошко - в него колеса выглядывают одним символом(соответствующим "числу", находящемуся в этот момент в "памяти")
5)каждое колесо оборудовано контактной группой, которая замыкается в нулевом положении колеса, для определения этого положения.
6)головка-указатель, передвигающаяся по рельсам вдоль блока памяти по командам ">" и "<". на головке установлен прижимной ролик, который может проворачивать колеса памяти по командам "+" и "-"
7)встречая команду "," выполнение программы прерывается, на головке загорается лампочка, указывающая что в ячейку нужно ввести данные(повернуть колесо рукой), после чего нажать кнопку, сдвигающую ленту программы вперед и тем самым продолжающую выполнение.
8)встречая команду ".", выполнение так же прерывается и загорается другая лампочка, с целью показать человеку содержимое ячейки. выполнение продолжается той же кнопкой.
9)встречая команду "[", и обнаружив замыкание контактов 0 положения текущего колеса(ответный контактный язычок можно расположить на головке, а все колеса запитать общим через ось) - считыватель (2) начинает прокручивать программу вперед, игнорируя команды, до соответствующего "]". соответствующая "]" ищется при помощи счетчика - отдельного колеса с контактными язычками для нулевого положения. встречая "[" - колесо проворачивается в одну сторону(увеличивая содержимое счетчика), а "]" - в обратную, до тех пор пока язычки снова не сомкнутся.
10)встречая команду "]" и ненулевое положение текущего колеса, считыватель начинает отлистывать программу в обратном направлении до соответствующей скобки, ища ее описанным выше способом.

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

логику реакции на контактные язычки лучше собрать на реле, будет прикольно щелкать да и без транзисторов более исторично)) для точного позиционирования головки, колес, и пр. подвижных частей есть мысль использовать дополнительные контактные язычки. (Идеал конечно шаговые двигатели, но тогда надо будет и управление к ним, и логику электронную и т.п., а это немножко нарушает концепт)
Эээээ... Brainfuck это... хм... если я правильно понимаю английский - "профакать" себе мозг? :wink:
Вобщем-то мы тужимся тут родить простой, но эффективный процессор сугубо на мелкой логике, что оказалось не так уж и просто и мне лично зело уже Brain проf@ckало...
Но воплощать частный случай машины Тьюринга на рэле и перфолентах... - так заf@ckать себе Brain мне даже как-то в голову не приходило!!! :o

Нет - есть конечно в сети герои и с такими подвигами (и ссылки есть на них), но лично я бы на такой Brainfuck не отважился... :(
Чем-то мне это всё зело напоминает машину Бэббиджа...
LesnikSBR
Junior
Posts: 5
Joined: 26 Jul 2011 00:45
Location: 109.106.155.21

Post by LesnikSBR »

Brainf*ck эт язык такой - http://ru.wikipedia.org/wiki/Brainfuck

:rotate:
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

LesnikSBR wrote:Brainf*ck эт язык такой - http://ru.wikipedia.org/wiki/Brainfuck :rotate:
Мне казалось, я задал вопрос про перевод, а не про язык...
Но судя по тому как на "язык" реагирует "спеллчекер" форума - моя догадка не далека от истины. :wink:
User avatar
HardWareMan
Banned
Posts: 2139
Joined: 20 Mar 2005 13:41
Location: От туда

Post by HardWareMan »

Процессор с нативным восприятием БФ вполне реально сделать как RISC. Но лично мне не настолько интересно, чтобы сесть за паяльник.
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

HardWareMan wrote:Процессор с нативным восприятием БФ вполне реально сделать как RISC. Но лично мне не настолько интересно, чтобы сесть за паяльник.
Наш прототип 4-BIT процессора сейчас выполняет сугубо похожую систему команд.


posting.php?mode=editpost&p=90158
Я ещё когда моделировал его пришел к выводу, что в принципе работать на нём можно, но программировать зело противно...
Программы на языке Brainfuck писать сложно, за что его иногда называют языком для мазохистов. Но при этом важно отметить, что Brainfuck является вполне естественным, полным и простым языком.
Но несмотря на внешнюю примитивность, Brainfuck с бесконечным набором ячеек имеет тьюринговскую полноту, а, следовательно, по потенциальным возможностям не уступает «настоящим» языкам, подобным Си, Паскалю или Java.
LesnikSBR
Junior
Posts: 5
Joined: 26 Jul 2011 00:45
Location: 109.106.155.21

Post by LesnikSBR »

risc без прямой адресации памяти? имхо это занижение возможностей архитектуры, возможностей имеющихся микросхем.

учитывая что программа не модифицируется в процессе исполнения, и не нужны указатели на инструкцию(любой счетчик указателя является ограничением, т.к. длина программы максимум равна максимальному значению этого счетчика) перфорированная лента - оптимальный вариант т.к. в теории ее можно сделать любой длины.
то же самое относится и к памяти - ее будет ровно столько, сколько установлено колес, т.е. нет ограничения
User avatar
HardWareMan
Banned
Posts: 2139
Joined: 20 Mar 2005 13:41
Location: От туда

Post by HardWareMan »

LesnikSBR wrote:risc без прямой адресации памяти? имхо это занижение возможностей архитектуры, возможностей имеющихся микросхем.
Кто сказал, что без?
LesnikSBR
Junior
Posts: 5
Joined: 26 Jul 2011 00:45
Location: 109.106.155.21

Post by LesnikSBR »

HardWareMan wrote:
LesnikSBR wrote:risc без прямой адресации памяти? имхо это занижение возможностей архитектуры, возможностей имеющихся микросхем.
Кто сказал, что без?
спецификация языка BrainF*ck
LesnikSBR
Junior
Posts: 5
Joined: 26 Jul 2011 00:45
Location: 109.106.155.21

Post by LesnikSBR »

правда шкафчик такой "комнатный" получится.. для того чтобы высота символа была в сантиметр, колёсико должно быть почти метр в диаметре))))

Lavr, верно, я к этой задумке отношусь с юмором, и если когда-нибудь соберу(врядли до пенсии), то чисто поржать ;)

off: вот что меня действительно заинтересовало, так это ядро z80 в PICе...
bar
Senior
Posts: 185
Joined: 07 Aug 2006 10:18

Post by bar »

Стоит ли заморачиваться?
Ну как тебе сказать. Если для собственного удовольствия -- то конечно же стоит. Если же для чего-то большего, то максимум чего можно достичь -- это много-много просмотров в youtube. ;)
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

Да нет... если всё это сделать, и колёса крутить не рукой, может получиться симпатичная вещь в стим-панк стиле...

Image

Стиль мне нравится, но вот делать всё это точно как написано, можно правда ближе к пеньсии - механики многовато... :wink: