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