Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Orgs shape, embeddedness and mem optimizations #90

Open
tmptrash opened this issue Apr 16, 2020 · 0 comments
Open

Orgs shape, embeddedness and mem optimizations #90

tmptrash opened this issue Apr 16, 2020 · 0 comments
Assignees
Labels
enhancement New feature or request
Milestone

Comments

@tmptrash
Copy link
Owner

tmptrash commented Apr 16, 2020

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

Подумать над:

  • Как будет кодироваться связь между предыдущей командой и следующей и как будут кодироваться их расположения? Ведь следующая команда может быть по одному из 8ми направлений относительно текущей (у меня уже были мысли по этому поводу)
  • Как будут осуществляться повороты организма?
  • Как будет реализовано движение? Весь организм сразу? Будет ли он "тянуться" или его атомы будут жестко закреплены друг к другу?
  • Нужны ли нам вообще молекулы и разделители между атомами? Если в мире будут существовать только атомы, то BioVM очень сильно упрощается. Нам в принципе не нужны будут классы Organism и Molecule. Точнее, Organism будет значительно упрощен. Он не будет хранить массив команд, так как они будут физически хранится в массиве мира. Все будет храниться в двумерном мире.
  • Команда будет занимать 6 бит. 2 первых бита будут свободны для будущих манипуляций
  • В моих записях в телефоне есть идея использования мультипоточности внутри одного организма

Связано с #70

@tmptrash tmptrash added the enhancement New feature or request label Apr 16, 2020
@tmptrash tmptrash added this to the Big world milestone Apr 16, 2020
@tmptrash tmptrash self-assigned this Apr 16, 2020
@tmptrash tmptrash changed the title World improvment Orgs shapre, embeddedness and mem optimizations Apr 16, 2020
@tmptrash tmptrash changed the title Orgs shapre, embeddedness and mem optimizations Orgs shape, embeddedness and mem optimizations Apr 16, 2020
@tmptrash tmptrash modified the milestones: Big world, Release 0.3 Apr 16, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant