А зачем брать электрон, если хочется на расте/плюсах писать?
Для раста есть кое-что похожее на Electron - Tauri. UI пишешь на html/css/js, и оно общается с растовым бэкендом.
Ещё можно посмотреть в сторону чего-то что не создаёт дополнительных процессов - Azul, например.
Ещё можно посмотреть в сторону wgpu - это абстракция над Vulkan/Metal/Directx
Подобные веб-приложения называются SPA (single page application).
Такие сейчас, в основном, делают при помощи одного из: Angular, React, Svelte, Vue. (Самые популярные - Angular и React. Самый наименее популярный - Svelte.)
В принципе, такое ты можешь сделать при помощи любой технологии - даже при помощи jquery, или вообще без сторонних библиотек.
Не уверен правда, сколько ты времени на это потратишь.
С другой стороны, если ты гениален, но плохо изучаешь новые вещи - может быть тебе проще будет навелосипедить всё с нуля.
Ничего особенного для связи не нужно.
Фронт скорее всего запускается через webpack-dev-server - в него можно через переменные среды прокинуть адрес бэкенда.
На проде фронт будет раздаваться, скорее всего, с nginx, так что никакой параметр прокинуть нельзя, зато можно обращаться к тому же домену, на котором сидит и фронт (делать запросы типа fetch("/api/something")) - и уже на стороне nginx разруливать.
Как-нибудь синхронизировать это перемещение картинок и передавать эту информацию каждому клиенту.
Передачу данных в реальном времени без перезагрузки страницы можно реализовать через вебсокеты
VM527:15 Uncaught SyntaxError: Identifier 'x1' has already been declared
1. И в ней, кмк, вполне чётко сказано, что у тебя на 27 строке объявляется переменная x1, которая уже объявлена.
2. У тебя ещё используется функция sqrt, которой в глобальной области видимости нет (по-умолчанию)
Вероятно, ты хотел Math.sqrt
PS: ну и JS не компилируемый язык, по тому он и не будет компилироваться.
Быстрее ли поиск в Map чем поиск в обычном массиве?
Поиск по ключу - конечно да. В случае массива, в худшем случае, придётся перебрать весь массив, а в случае с Map и Object поиск будет за константное время, но чуть большее, чем в массиве по номеру элемента.
А разницы между Map и Object особой быть не должно, но я бы предпочёл Map.
Это классическая задача на конкурентный доступ к одному ресурсу.
Варианта три:
1. Дать возможность редактировать форму в реальном времени, как это делает miro и google docs, но тут возникает много других сложных проблем.
2. Ввести понятие "ревизии" в форму. И при сохранении клиент будет передавать номер ревизии, на которой основаны его изменения.
Если при этом на сервере ревизия уже новая - клиенту она передаётся, и он должен поправить у себя номер ревизии.
Так делает, например Azure Devops
3. Когда пользователь работает над формой - он накладывает блокировку на форму. Информация о блокировке сохраняется в БД, и другие пользователи не могут редактировать, пока на объекте стоит чужая блокировка.
Так делает 1С
А он и не должен интерпретировать JS - его ответственность только слать http-запросы.
Если вам нужно полноценно запускать js, полученный в ответе - посмотрите в сторону браузерной автоматизации.
Например на playwright