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

Комментарии 26

Еще с 1950-х годов существует такая традиция: давать компьютерам географические названия.

Я сталкивался с такими названиями у военных, ища специфическую информацию о радиоразработках в 1950-1970. Лично меня это сначала путало.

Основное практическое назначение данной разработки - тестирование мозгов читателей на прочность :)

Хотелось бы чтобы lispbuilder-sdl и bordeaux-threads были упомянуты в зависимостях в asd-файле, ну и в README была бы старотовая информация о том, как запустить и увидеть работу машины

Ну, там много чего вообще еще не доделано. Немало повторяющегося кода надо оформить в функции, эмулятор как попало оптимизирован. Думаю, его раза в 2-3 можно ускорить.

За замечание спасибо, вставлю.

Вкратце:

>(defparameter machine (make-izhora)) ; создать пустую машину
>(asm-compile-file-to-machine "whatever.s" machine) ; компиляция

>(save-machine machine "whatever") ; сохранить состояние машины, прибавляется автоматически расширение .izh
>(display-run machine :speed 1000) ; запустить визуально, по 1000 шагов на кадр
>(step-program machine 1000000) ; прокрутить на миллион шагов

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

А какую прогрмму Вы пытались загрузить? Окно не должно закрываться. Это, вероятно, какой-то глюк lispbuilder-sdl.

Запустите также саму машину в Golly. Эмулятор сам по себе - невелика хитрость.

Попробуйте вручную вписать:
(defparameter machine (make-izhora))

(setf (aref (izhora-code machine) #x0482) #xFFFFFFFF)

(display-run machine :run nil)

Должна появиться красная полоска посреди экрана.

С глюками SDL иногда помогает перекомпиляция этого пакета.

Только что скомпилил текущую версию на другом компьютере. Нормально работает. На обоих компах - Debian. Есть еще один - там FreeBSD. Тоже работает.

Пока там bordeaux-threads еще вообще не используется. Одна машина тупо крутится с каждым кадром экрана. Вставил, чтобы можно было параллельно запускать одну или несколько машин и мониторить их состояние.

Удалось настроить SDL? Добавил информации в README и отметил, что на некоторых OS и с некоторыми реализациями CL экран может не запуститься.

Ижора, Сетунь, на рабочем столе ОС иконы Николая Чудотворца и пресвятой Богородицы, клавиатуру протирать строго святой водой... Сорри за стёб, понесло меня что-то с утра.

Зато Adobe - ручей длиной 12 миль. В одном месте, впрочем, он достигает ширины 5 метров и там цапли с пеликанами обитают. Однако, он протекает за гаражом основателя фирмы, поэтому он ее так окрестил.

Кстати, Сетунь - слово балтийского происхождения, а Ижора - название древнего финно-угорского племени, которое поселе живо, хотя и крайне малочисленно. Почему обязательно Николай Чудотворец, а не Перкунас (литовский Перун, бог-громовержец), или Хийси (карело-финский леший и небесный лось)?

Сорри, понесло еще дальше.

Будь по Вашему, благородный бояринЪ ;)))))))))))))))))))))

10 операций в секунду — это не 80-е, а 40-е года :)

В эмуляторе - 10-20 миллионов в секунду.

Клеточный автомат - скорее концептуальная головоломка. Каждая операция занимает вообще-то 40-50 тысяч шагов, Golly может их прогнать примерно за 100-150 мс. Это зависит от платформы для клеточных автоматов, а не самой машины. По ресурсам - это 80-е.

Когда напишу симулятор уже для самой Golly, на Питоне, будет скорость как в 1980-е.

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

Я не знаю правила wireframe. Вероятно, Вы имели в виде WireWorld. Внутри проводов в WireWorld действует правило b12/s/3 или, в другой нотации, /12/3. Оно взрывное на 100%. Никаких стабильных структур в нем нет и быть не может. Логические цепи там создаются заключением этого правила в провода и опираются исключительно на пульсирующие схемы, которые требуют жесткой синхронизации всех элементов. Малейшая неточность там вызывает "взрыв", но, поскольку он происходил внутри проводов, взрыв этот выглядит как бессмысленное мигание.

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

Мое правило, как указано в статье, исходит из более старого правила Fireworld, которое само по себе Turing-complete и вполне пригодно для создания логических схем без всяких проводов. Однако, провода позволяют их создавать на порядок быстрее и компактнее. В Fireworld есть устойчивые структуры: точки и ассамбли точек, которые как раз и создаются, удаляются, модифицируются столкновением фотонов. Это позволяет, помимо прочего, тривиально конструировать триггеры и устойчивые регистры памяти. Прикол Fireworld именно в том, что правило это склонно "взрываться", но не столь часто, оставаясь интересным и разнообразным. Сравните с более известными, во многом схожими правилами Brian's Brain и StarWars.

Электроны при столкновении на горизонтальном проводе в одной фазе друг друга аннигилируют, а в противофазе порождают "грабли" (rake), стреляющие фотонами сразу в три стороны. Но это, на мой взгляд, плюс, а не минус. Можно эту реакцию элементарно заглушить точками проводов на расстоянии 2 клеток от сигналов, можно использовать для отражения сигналов, для контролируемой генерации сигналов с определенной частотой, для разведения сигнала сразу по многим проводам, и много чего еще.

Заметьте, что самые частые элементы в схемах WireWorld - диоды. Столкновение сигналов там постоянное паразитное явление, с котором необходимо бороться даже в простейшей схемке. Пропуск сигналов сквозь пересекающиеся провода (crossover) там невозможен без диодов, поэтому там сигналы могут на практике двигаться только в одну сторону. В моем компьютере нет вообще ни одного диода, хотя создать их так же просто. Они просто не нужны. Единственная довольно хитрая схема crossover там сделана для ввода/вывода в ОЗУ сквозь провода, которые одновременно посылают текущее состояние экранной памяти на дисплей. Но и там диоды не нужны, только пара десятков вентилей XOR.


Правило WireWorld хоть и самое взрывное, но и самое простое. Сигнал, заключённый в провод, не взрывается, вне проводов сигнала нет. Зачем говорить о фракталах внутри проводных областей? Они же там совсем не используются, основа всех схем у этих правил провода. Внутри провода встречные сигналы просто гасятся. Диоды, бывает, нужны, чтобы сигналы не сходились прямо внутри логических узлов, из-за чего и могла бы появиться взрывная ультра-генерация.

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

Правила WireWorld тоже вполне интересны и подходящие для схем, там простота взамен отсутствия внепроводных структур.

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

Как вам правила, по которым сигнал каким-то образом проходил от начала провода к концу как бы мгновенно? Ведь в реальных схемах эта скорость предельно высока. Может, такие правила уже есть? Было бы интересно. Или вы думаете это уже не клеточный автомат был бы? Вот, в майнкрафте схемы достаточно быстро передают сигнал, как действительно по проводам.

Причем тут фрики? ))) Я Вам объяснил причины, из-за которых лично мне мое правило интересней и удобней. Схемы в WireWorld получаются в среднем компактнее раза в 3, это верно, но я не уверен, что там можно реализовать память на линиях задержки с частотой p3. Может быть, и можно. Было бы интересно посмотреть реализацию.

"Лучше" или "хуже" - в данном случае заведомо субъективное и относительное понятие. Каждый в праве их отстаивать, хаха. Я возражил на Ваше возражение о том, что WireWorld - лучше. В чем-то лучше, согласен, в чем-то хуже, вопрос вкуса, но столкновение фотонов не имеет к этому никакого отношения. В любом правиле нужно учитывать синхронизацию и правильную фазу сигналов. Верно это и для реальной электроники. С тем же успехом можно утверждать, что по ошибке можно не то и не так соединить, и в результате схема сгорит.

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

Теперь по существу. Я уже выше сказал, и сослался на свой репозиторий, что "схемы на месте пустого пространства" создавать можно. Более того, в стандартной игре "Жизнь" был построен ряд компьютеров, в том числе и копирующих себя от начала и до конца. Один из самых интересных - 0E0P metacell, разработан Адамом Гаучером в 2014-2018 году. Но он зрительно совершенно не похож на компьютер и работает, мягко говоря, медленно. Весь процесс копирования, по расчету автора, занимает 2^36 шагов. Ему даже не удалось этот процесс пронаблюдать; корректность работы этой потрясающе сложной конструкции, созданной специальной программой, а не вручную, доказана пока чисто математически. Но всякие правила, обладающие полнотой по Тьюрингу, можно в принципе для чего угодно использовать.

Большинство практических компьютеров на клеточных автоматах основаны именно на правилах, по которым сигнал проходит от начала провода мгновенно. Проблема в том, что это не классические клеточные автоматы и ни одна из популярных программ клеточных автоматов такие правила не поддерживает. Можно написать свои скрипты для их поддержки в Golly, люди так и делают. Вот список известных компьютеров на клеточных автоматах, которые действительно напоминают компьютеры, а не машины Тьюринга и прочие неудобные для программирования вещи. Многие из них построены именно на правилах с бесконечной "скоростью света" (instant wires).

https://www.conwaylife.com/forums/viewtopic.php?f=11&t=3362&p=59234&hilit=Wire2#p59234

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

Уточнение. Только что проверил: не большинство из 7 компьютеров в вышеуказанном списке построены на проводах с бесконечной "скоростью света", но только один: Důvěřivý на правиле Rychládrát. Несколько других правил там "заточены" специально под электронику, но это обычные клеточные автоматы, причем весьма сложные, некоторые с десятками разных состояний клеток. Однако, в списке самих правил, авторы которых поленились собрать полностью компьютеры, правил таких несколько.

Просто именно этот компьютер с чешским названием я внимательно изучал, поэтому он мне запомнился. Именно он, помимо "Сетуни", повлиял на мое решение дать своей конструкции русское название. Вот описание по-английски:

https://www.conwaylife.com/forums/viewtopic.php?f=11&t=3756

Лет 20 назад околокомпьютерные СМИ массово рассказывали о самосборных структурах на кремнии и графене. По-идее, клеточные автоматы, подобные описанному в статье и такие структуры — близнецы-братья, но о практических реализациях — ничего не слышно.

Кто-нибудь в курсе, не «выстрелило» или заграбастали военные?

Над этим работают, есть целая область molecular computing и биоинформатики. Смотрите ниже ссылки на английскую Вики. Но сегодня, насколько я понимаю, исследуются больше самосборные структуры на основе ДНК, т.е. биороботы, теоретически способные размножаться. Отнюдь не безопасные, IMHO, исследования. И так уже сейчас "весело" с короной, не хватало еще искусственных вирусов с настоящим встроенным компьютером.

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

Спасибо. Почитаю.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории