Это очень фундаментальная идея того, как организмы должны хранится в мире и из чего состоять. Она сводит все маленькие идеи воедино...
В ветке language-redesign, последние пол года я пытался сделать так чтобы операторы языка являлись атомами и занимали физическое место в двухмерном мире. Это первый шаг в тому чтобы получить более реальный эмулятор реальности. Таким образом организмы состоят из того, из чего состоит остальной мир вокруг. Второй шаг - сделать так чтобы организмы имели форму. То есть занимали пространство определенной конфигурации (как в нашем мире). Чтобы это было возможно, нужно чтобы каждая команда или атом занимал одну клетку в 2х мерном мире. То есть, организм будет физически находится в разных точках мира и при этом представлять из себя линейный байт код. В структурах VM.orgs и BioVM.orgMols будут храниться только 32 битные числа - ссылки на первый байт организма в двумерном мире. Сами эти структуры превратятся из FastArray в Uint32Array. Сам мир будет представлять из себя Uint8Array. Еще это очень оптимизирует расход памяти. Сейчас хранение ссылок на классы Organism и Molecule занимают по 60 байт каждая. Это дикий перерасход.
Подумать над:
Как будет кодироваться связь между предыдущей командой и следующей и как будут кодироваться их расположения? Ведь следующая команда может быть по одному из 8ми направлений относительно текущей (у меня уже были мысли по этому поводу)
Как будут осуществляться повороты организма?
Как будет реализовано движение? Весь организм сразу? Будет ли он "тянуться" или его атомы будут жестко закреплены друг к другу?
Нужны ли нам вообще молекулы и разделители между атомами? Если в мире будут существовать только атомы, то BioVM очень сильно упрощается. Нам в принципе не нужны будут классы Organism и Molecule. Точнее, Organism будет значительно упрощен. Он не будет хранить массив команд, так как они будут физически хранится в массиве мира. Все будет храниться в двумерном мире.
Команда будет занимать 6 бит. 2 первых бита будут свободны для будущих манипуляций
В моих записях в телефоне есть идея использования мультипоточности внутри одного организма
Это очень фундаментальная идея того, как организмы должны хранится в мире и из чего состоять. Она сводит все маленькие идеи воедино... В ветке language-redesign, последние пол года я пытался сделать так чтобы операторы языка являлись атомами и занимали физическое место в двухмерном мире. Это первый шаг в тому чтобы получить более реальный эмулятор реальности. Таким образом организмы состоят из того, из чего состоит остальной мир вокруг. Второй шаг - сделать так чтобы организмы имели форму. То есть занимали пространство определенной конфигурации (как в нашем мире). Чтобы это было возможно, нужно чтобы каждая команда или атом занимал одну клетку в 2х мерном мире. То есть, организм будет физически находится в разных точках мира и при этом представлять из себя линейный байт код. В структурах
VM.orgs
иBioVM.orgMols
будут храниться только 32 битные числа - ссылки на первый байт организма в двумерном мире. Сами эти структуры превратятся изFastArray
вUint32Array
. Сам мир будет представлять из себяUint8Array
. Еще это очень оптимизирует расход памяти. Сейчас хранение ссылок на классыOrganism
иMolecule
занимают по 60 байт каждая. Это дикий перерасход.Подумать над:
BioVM
очень сильно упрощается. Нам в принципе не нужны будут классыOrganism
иMolecule
. Точнее,Organism
будет значительно упрощен. Он не будет хранить массив команд, так как они будут физически хранится в массиве мира. Все будет храниться в двумерном мире.Связано с #70