Хотелось бы поделиться с читателями Хабра довольно необычной разработкой: настоящим компьютером, сделанном в виде клеточного автомата, действующего по простому правилу Fireworld2 с четырьмя состояниями клеток. Текущая базовая версия компьютера называется "Ижора 1". Еще с 1950-х годов существует такая традиция: давать компьютерам географические названия.
Паттерн, состоящий из более 6 миллионов клеток, содержит 256 килобайт памяти и снабжен монохромным экраном 128x64 пикселей, отражающим состояние экранного раздела ОЗУ, примерно как в ZX Spectrum и других популярных исторических моделях персональных компьютеров. Программы можно писать на ассемблере, компилировать в машинный код, тестировать на симуляторе и вводить специальной утилитой в сам клеточный автомат. Другая утилита позволяет сохранять текущее состояние компьютера. Для запуска компьютера необходима программа Golly - лучшая на сегодня площадка для подобного рода исследований.
Ассемблер и эмулятор написаны на языке Common Lisp, скрипты для ввода программ в сам клеточный автомат и сохранения его состояния - в Python. Компьютер имеет 32-битную архитектуру и на данный момент в нем всего один регистр и одна операция: вычитание с условным переходом в случае отрицательного или нулевого результата (Subleq). Несмотря на примитивность такой модели, давно доказана ее универсальность. Существует даже операционная система Dawn OS, написанная для эмулятора Subleq-процессора.
Итак, суммируем: виртуальный компьютер с экзотической моделью программирования и ресурсами уровня древних ПК 1980-х, исполняющий всего около 10 операций в секунду, требующий современный компьютер с несколькими гигабайтами памяти (рекомендуемый минимум - 8 гигабайт), с эмулятором и ассемблером на Лиспе. Зачем и кому это нужно? Очень краткий ответ: ради хака и ретрокомпьютинга. Ниже - более подробно.
О клеточных автоматах
Клеточный автомат состоит из регулярной решетки ячеек, каждая из которых может находиться в нескольких состояниях. На каждом шаге или "поколении" состояние каждой ячейки меняется в соответствии с состояниями ее соседей. Чаще всего рассматриваются двухмерные автоматы с квадратными ячейками, действующие на теоретически бесконечном поле, имеющие небольшое число состояний (обычно не больше 5). Учитываются только ближайшие 8 соседей ячейки, т.н. окрестность Мура ранга 1. Наиболее знаменитый и исследованный автомат - игра "Жизнь" Джона Конуэя.
В целом клеточные автоматы можно рассматривать как обобщение машин Тьюринга с синхронным параллельным вычислением. Любая классическая машина Тьюринга может быть эмулирована клеточным автоматом. При исследовании того или иного клеточного правила, в свою очередь, часто ставится вопрос о полноте или неполноте его по Тьюрингу, то-есть о теоретической возможности использования к качестве универсального компьютера. В частности, полнота "Жизни" по Тьюрингу была доказана еще Конуэем. Я доказал ее для своего правила стандартным способом: путем эмуляции в нем другого, очень простого одномерного автомата, так называемого правила 110, о котором известно, что оно теоретически пригодно для сколь угодно сложных вычислений.Вышеупомянутая программа Golly позволяет определять и запускать также целый ряд других автоматов, включая одномерные и некоторые трехмерные, с большим радиусом окрестностей, с треугольными и шестиугольными ячейками. Можно там задать даже такие правила, в которых соседние ячейки никак не влияют на работу автомата, зато влияют находящиеся на некотором расстоянии (все или некоторые).
Джон фон Нейман еще в начале 1940-х создал сложный клеточный автомат с 29 состояниями, в котором возможно создать виртуального робота-репликатора, бесконечно копирующего самого себя. Надо заметить, что в момент разработки компьютеров еще не было: фон Нейман разработал свой автомат на бумаге! Конуэй показал, что чрезвычайно сложно может себя вести и удивительно простая модель с 2 состояниями.
Клеточные автоматы используются сегодня для моделирования физических, химических, биологических систем, в области искусственного интеллекта. Нейронные сети в принципе тоже могут рассматриваться как специфические обобщения клеточных автоматов, хотя отличаются от последних потенциально бесконечным числом состояний и сложной топологией связей между нейронами. В свою очередь, клеточный автомат можно рассматривать как своего рода упрощенную нейросеть.
В 2001 году я придумал клеточное правило с 4 состояниями, несколько напоминающее известные правила Brian's Brain и Starwars. Назвал я это правило Computer, но потом переименовал в Fireworld, по аналогии с правилом Wireworld, где еще в конце 1990-х был создан... скажем так, программируемый калькулятор. При всей элегантности этой штуки, 64 адреса программы и данных годятся лишь для демонстрации концепции. Хотя я знаком с человеком, написавшим для этого калькулятора целый язык программирования.
В Fireworld мне удалось еще 20 лет назад создать логические цепи, затем регистры памяти, сумматор, вычитатель, мультиплексоры и демультиплексоры, но что-либо более сложное там соорудить затруднительно из-за проблем синхронизации сигналов. В конце 2020 году, в ходе обсуждений на английском форуме Lifewiki, я попробовал добавить к Fireworld еще одно состояние: "провода", по поверхности которых могут бегать "сигналы". Правило оказалось весьма удачным: где-то за час я в нем, переставляя клетки на экране, нашел простые механизмы для всех побитных логических операций, а также для записи битов информации.
Правила следующие:
А. Fireworld:
"Красная" или живая клетка рождается, когда окружена двумя другими живыми клетками, одна из которых должна находиться рядом по диагонали, а другая - по горизонтали или вертикали. Легко запомнить, по аналогии с родителями обоих полов.
Красная клетка выживает, если у нее нет соседей, либо два соседа по горизонтали/вертикали (в любом положении) и еще один по диагонали.
Если клетка не выживает, на следующем шаге она становится "желтой". Мне не нравится обозначение "мертвая". В Wireworld это состояние именуется "хвостом электрона". Желтая клетка не мешает красным рождаться или выживать в соседних позициях, но предотвращает рождение живой клетки на ее месте. Такие правила называют Generations. В Golly это правило обозначается сегодня "03ajkr/2ak/3".
Б. Fireworld2:
Правила такие же, как в Fireworld, но клетка выживает еще и с 7 соседями. На работу компьютера это никак не влияет, однако позволяет сконструировать некоторые интересные вещи. Синие клетки "проводов" задаются раз и навсегда, работа автомата не может их никак изменить. Если пустая клетка окружена двумя или тремя клетками "провода", а также одной красной клеткой или двумя красными клетками, расположенными рядом по горизонтали или вертикали, на ее месте рождается красная клетка. Это позволяет легко "ловить" так называемые "фотоны" - "летящие" с максимальной скоростью объекты из двух живых и двух желтых клеток, подобные "космическим кораблям" в игре "Жизнь". В моем репозитории Fireworld собрано еще несколько десятков "фотонных" правил и сотни всяких паттернов.
Почему Лисп? Причем тут Ижора?
В некотором смысле, Лисп обладает таким же изяществом, как и клеточные автоматы: крайней простотой синтаксиса, позволяющей создавать сколь угодно сложные конструкции. Можно сказать, что синтаксиса как такового в классических диалектах Лиспа нет вообще: и данные, и программы представляют собой абстрактные деревья, которые на практике выглядят как заключенные в скобки списки элементов. Труда не составляет написать функцию, пишущую или изменяющую код, в том числе и свой собственный. В Common Lisp можно писать программу и тестировать ее "на лету" кусочек за кусочком. Не нужно каждый раз, как в C или Java, компилировать, а затем отдельно запускать: в Лиспе все это интегрировано. Можно даже во время работы программы ее кусками переписывать. Современные версии Лиспа компилируют сразу в машинный код, поэтому работают быстро, примерно как та же Java.
В 2017-2018 году, тоже на Лиспе, я написал виртуальную машину под названием Nutes, в честь советского троичного компьютера "Сетунь". Машина работает тоже на троичной логике и тоже всего с одной операцией симметричного двойного вычитания двух операндов: в одну ячейку записывается a-b, в другую b-a. Операция задана так, что любой код, инвертированный по знаку и записанный задом наперед, работает точно так же, как и оригинал. Поэтому Nutes - это Setun наоборот.
Опыты с той троичной машиной меня убедили, что одной операции вычитания действительно достаточно для практического синтеза всех прочих. Кстати, в одном из древнейших компьютеров, Manchester Baby, было тоже только вычитание. Он был разработан в 1948 году как чисто тестовая модель с крошечной памятью из 32 регистров, но уже позволял, например, вычислять последовательность простых чисел. Множество советских ЭВМ, да и не только советских, были названы в честь местностей, гор и рек, включая Днепр и Раздан. Сетунь - это нижний приток реки Москвы. Поэтому я решил так назвать свое сооружение: Ижора - левый приток Невы.
Краткое техническое описание
Основная память в виртуальном компьютере "Ижора" состоит из сегментов по 256 байт, адресуемых по 32 бита. Биты там упакованы в зацикленную схему из "проводов" и постоянно крутятся по циклу, на манер ранних моделей компьютерной памяти на линиях задержки.
Сами сегменты гибкие и позволяют разные режимы адресации, от побитовых до 64-битных. Каждый сегмент содержит простой контроллер для записи и чтения. Обе операции совмещены: содержимое памяти переписывается логической операцией исключающего "или" (XOR). Таким образом, если послать на запись 0, сегмент просто выводит содержимое памяти, не меняя его, а если послать 0xFFFFFFFF, то содержимое инвертируется. Компьютер автоматически "ксорит" заранее данные операнда при записи, чтобы вписать в память нужную информацию.
Нужный сегмент из 1024 штук (сетка из 32x32 сегментов) выбирается сериями демультиплексеров, которые открывают только один нужный горизонтальный и вертикальный ряд для пропуска информации. Когда информация, посланная вертикально и горизонтально, "встречается" в нужном секторе, запускается механизм ввода/вывода.
Значительную часть схемы составляет общий контроллер памяти, который разбивает адрес на 5, 5 и 6 бит. Нижние 6 бит обозначают момент, когда нужно послать запрос в сегмент для доступа к требуемой ячейке. Они обрабатываются довольно хитрым синхронизатором. Остальные 10 бит указывают на адрес сегмента. В принципе память можно расширять до бесконечности, прицепив сколько угодно сегментов по вертикали и горизонтали.
Еще в схеме памяти присутствуют временные регистры для упаковки и распаковки битов. Внутри сегментов информация запакована вдвое плотнее рабочей частоты процессора и АЛУ (соответственно, 3 и 6 шагов автомата на бит). Упаковка позволяет намного уменьшить размер памяти и ускорить доступ.
Дисплей постоянно получает информацию из 4 сегментов, каждый пискель реагирует на нужный бит. В общей сложности, видеопамять занимает 1 килобайт и начинается с адреса 0x0400. Поскольку адресация 32-битная, 16 бит адреса позволяют адресовать как раз 256 килобайта. Для наиболее часто встречающихся данных и подпрограмм следует использовать нижние адреса, поскольку время обращения к памяти зависит от расстояния между процессором и данным сегментом (NUMA).
Команды одноадресные: старшие 16 бит расшифровываются как адрес условного перехода, младшие - как адрес операнда. Содержимое аккумулятора вычитается из содержимого операнда; результат записывается одновременно в аккумулятор и по адресу операнда. Если результат вычитания нулевой или отрицательный, вычисление переходит на адрес условного перехода; если положительный, счетчик команд увеличивается на единицу (инкрементируется).
Помимо самих сегментов памяти, весь обмен информацией идет по принципу, напоминающему модем: "пилотный" бит сообщает о том, что вслед за ним следуют n бит данных. Таким образом, 0 кодируется как 01, 1 - как 11, 2 - как 101, и так далее. Исключение составляют только T-триггеры, реагирующие на единичный сигнал. Последовательная модель обмена информацией намного упрощает схему: не нужно многобитовых шин. Важно еще заметить, что везде, кроме синхронизатора обмена данными с ОЗУ, используется асинхронный принцип: элементы компьютера содержат генераторы сигналов, которые включаются, как приходит предварительный бит, обрабатывают следующие за ним биты, прицепляют входной бит обратно к результату, если надо, а потом сами же выключаются. Поэтому не нужно каждый раз считать, как часто бывает в клеточных автоматах, когда именно в точности нужно послать тот или иной сигнал. Элементы сцепляются механически, в принципе можно создать и скрипты для автоматической генерации нужных "микросхем" на основе этого правила.
В репозитории приводятся примеры программ на пока еще недоделанном ассемблере: "Hello World" с применением цикла и без, вывод последовательности простых чисел, чисел Фибоначчи и 128-битных факториалов. Вывод пока просто двоичный, пикселями на дисплее.
Практическое назначение
Основное практическое назначение данной разработки - тестирование компьютеров на прочность. В частности, у меня сгорел в процессе исследования блок питания. Впрочем, он был старый и испорченный цементной пылью. Когда сосед затеял ремонт квартиры, он начал гудеть и шипеть. В смысле, загудел блок питания, хотя и сосед тоже.
Это, конечно, шутка. Подобные разработки могут быть использованы, возможно, в детском образовании: например, в кружке юных электронщиков. Можно не паять и даже не сцеплять схемки на макете с дырочками, но рисовать их мышкой на экране. Как ни странно, ощущение как от пайки, с той существенной разницей, что побитую схему не придется выкидывать, и вообще не нужно закупаться деталями. Тестирование виртуальных устройств в клеточных автоматах не так уж отличается от реальной электроники: часто приходится подключать сигнал-генераторы, следить за выходом сигнала с разных точек, мерить частоту, думать, где плохо "припаял" ту или иную деталь.
Может такое в принципе заинтересовать и разработчика микроконтроллеров. Уже есть любительские модельки, основанные на операции Subleq. В общем, прошу любить и жаловать. Или тихо ненавидеть за время, потраченное на знакомство с невиданными доселе извращениями.
Комментарии (26)
klvov
20.10.2021 23:26+4Основное практическое назначение данной разработки - тестирование мозгов читателей на прочность :)
Rigidus
21.10.2021 06:05Хотелось бы чтобы lispbuilder-sdl и bordeaux-threads были упомянуты в зависимостях в asd-файле, ну и в README была бы старотовая информация о том, как запустить и увидеть работу машины
Yoel Автор
21.10.2021 06:55Ну, там много чего вообще еще не доделано. Немало повторяющегося кода надо оформить в функции, эмулятор как попало оптимизирован. Думаю, его раза в 2-3 можно ускорить.
За замечание спасибо, вставлю.
Yoel Автор
21.10.2021 07:02Вкратце:
>(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) ; прокрутить на миллион шаговRigidus
21.10.2021 10:09после запуска некоторое время вижу черное окно, и все, потом оно закрывается
Yoel Автор
21.10.2021 12:40А какую прогрмму Вы пытались загрузить? Окно не должно закрываться. Это, вероятно, какой-то глюк lispbuilder-sdl.
Yoel Автор
21.10.2021 12:55Запустите также саму машину в Golly. Эмулятор сам по себе - невелика хитрость.
Попробуйте вручную вписать:
(defparameter machine (make-izhora))(setf (aref (izhora-code machine) #x0482) #xFFFFFFFF)
(display-run machine :run nil)
Должна появиться красная полоска посреди экрана.С глюками SDL иногда помогает перекомпиляция этого пакета.
Yoel Автор
21.10.2021 13:47Только что скомпилил текущую версию на другом компьютере. Нормально работает. На обоих компах - Debian. Есть еще один - там FreeBSD. Тоже работает.
Yoel Автор
21.10.2021 07:07Пока там bordeaux-threads еще вообще не используется. Одна машина тупо крутится с каждым кадром экрана. Вставил, чтобы можно было параллельно запускать одну или несколько машин и мониторить их состояние.
Yoel Автор
01.11.2021 17:05Удалось настроить SDL? Добавил информации в README и отметил, что на некоторых OS и с некоторыми реализациями CL экран может не запуститься.
Albert2009ru
21.10.2021 09:09+1Ижора, Сетунь, на рабочем столе ОС иконы Николая Чудотворца и пресвятой Богородицы, клавиатуру протирать строго святой водой... Сорри за стёб, понесло меня что-то с утра.
Yoel Автор
21.10.2021 09:33+4Зато Adobe - ручей длиной 12 миль. В одном месте, впрочем, он достигает ширины 5 метров и там цапли с пеликанами обитают. Однако, он протекает за гаражом основателя фирмы, поэтому он ее так окрестил.
Кстати, Сетунь - слово балтийского происхождения, а Ижора - название древнего финно-угорского племени, которое поселе живо, хотя и крайне малочисленно. Почему обязательно Николай Чудотворец, а не Перкунас (литовский Перун, бог-громовержец), или Хийси (карело-финский леший и небесный лось)?
Сорри, понесло еще дальше.
ksr123
21.10.2021 12:4310 операций в секунду — это не 80-е, а 40-е года :)
Yoel Автор
21.10.2021 13:42В эмуляторе - 10-20 миллионов в секунду.
Клеточный автомат - скорее концептуальная головоломка. Каждая операция занимает вообще-то 40-50 тысяч шагов, Golly может их прогнать примерно за 100-150 мс. Это зависит от платформы для клеточных автоматов, а не самой машины. По ресурсам - это 80-е.
Yoel Автор
21.10.2021 13:49Когда напишу симулятор уже для самой Golly, на Питоне, будет скорость как в 1980-е.
yurixi
24.10.2021 18:15Возможно, правило wireframe больше подходит для построения логических проводных цепей. В ваших правилах преимущество только в том, что сигналы могут идти без проводов, в виде фотонов. Но вы пробовали сталкивать два сигнала, идущих по проводу навстречу? Происходит взрыв, который явно напоминает, почему правило fireworld так называется — всё начинает пылать огнём.
Yoel Автор
30.10.2021 19:15Я не знаю правила 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.yurixi
31.10.2021 05:45Правило WireWorld хоть и самое взрывное, но и самое простое. Сигнал, заключённый в провод, не взрывается, вне проводов сигнала нет. Зачем говорить о фракталах внутри проводных областей? Они же там совсем не используются, основа всех схем у этих правил провода. Внутри провода встречные сигналы просто гасятся. Диоды, бывает, нужны, чтобы сигналы не сходились прямо внутри логических узлов, из-за чего и могла бы появиться взрывная ультра-генерация.
Вряд ли линия задержки и стабильные структуры сильно различаются в удобстве хранения информации, впрочем, да, дополнительный вид хранения это действительно дополнительная фишка. Да и вообще, добавление фотонов это именно добавление, а не ограничение. Мне сразу понятно, что правила могут быть хоть и сложнее, но интереснее. Но вы так упорото отстаиваете «превосходство» своих правил, что это сразу напоминает, почему фриков не любят. Отстаивают свои увлечения — как в бою самого себя, хаха.
Правила WireWorld тоже вполне интересны и подходящие для схем, там простота взамен отсутствия внепроводных структур.
Я размышляю о развитии правил. Думаю, даже в огненных правилах нельзя создавать схемы на месте пустого пространства. Конечно, существуют правила, по которым рядом с компьютером можно по программе построить ещё один компьютер. Но эти правила ещё сложней, лично я их освоить не смог.
Как вам правила, по которым сигнал каким-то образом проходил от начала провода к концу как бы мгновенно? Ведь в реальных схемах эта скорость предельно высока. Может, такие правила уже есть? Было бы интересно. Или вы думаете это уже не клеточный автомат был бы? Вот, в майнкрафте схемы достаточно быстро передают сигнал, как действительно по проводам.Yoel Автор
31.10.2021 16:02+1Причем тут фрики? ))) Я Вам объяснил причины, из-за которых лично мне мое правило интересней и удобней. Схемы в 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
Что касается сравнения с реальной электроникой, учтите, что чем быстрее она работает, тем более заметной становится ограничение скорости света. В результате классические клеточные автоматы все больше напоминают модели современных процессоров, где скорость работы зависит от физического расположения элементов.
Yoel Автор
31.10.2021 17:27Уточнение. Только что проверил: не большинство из 7 компьютеров в вышеуказанном списке построены на проводах с бесконечной "скоростью света", но только один: Důvěřivý на правиле Rychládrát. Несколько других правил там "заточены" специально под электронику, но это обычные клеточные автоматы, причем весьма сложные, некоторые с десятками разных состояний клеток. Однако, в списке самих правил, авторы которых поленились собрать полностью компьютеры, правил таких несколько.
Просто именно этот компьютер с чешским названием я внимательно изучал, поэтому он мне запомнился. Именно он, помимо "Сетуни", повлиял на мое решение дать своей конструкции русское название. Вот описание по-английски:
https://www.conwaylife.com/forums/viewtopic.php?f=11&t=3756
Osnovjansky
25.10.2021 11:50Лет 20 назад околокомпьютерные СМИ массово рассказывали о самосборных структурах на кремнии и графене. По-идее, клеточные автоматы, подобные описанному в статье и такие структуры — близнецы-братья, но о практических реализациях — ничего не слышно.
Кто-нибудь в курсе, не «выстрелило» или заграбастали военные?Yoel Автор
30.10.2021 19:26Над этим работают, есть целая область molecular computing и биоинформатики. Смотрите ниже ссылки на английскую Вики. Но сегодня, насколько я понимаю, исследуются больше самосборные структуры на основе ДНК, т.е. биороботы, теоретически способные размножаться. Отнюдь не безопасные, IMHO, исследования. И так уже сейчас "весело" с короной, не хватало еще искусственных вирусов с настоящим встроенным компьютером.
Насколько я понимаю, современная фармакология и генетика все больше напоминает клеточные автоматы, только трехмерные и не присывающиеся в простую модель одинаковых клеточек (кубиков, в трехмерном случае). Но суть похожа. Фармацевты рисуют молекулу, на мощном кластере моделируют ее развитие при столкновении с моделями реальных белков и клеток, или если встравить ее в виртуальную клетку. Если получается что-то полезное и интересное, то синтезируют эту молекулу уже в реальном виде.
Javian
Я сталкивался с такими названиями у военных, ища специфическую информацию о радиоразработках в 1950-1970. Лично меня это сначала путало.