Исполнители - это как-бы объекты, которые что-то делают (хранят состояния и имеют методы).
Можно сказать, что Кумир - это почти объектно-ориентированный язык,
только классы надо описывать снаружи и на языке C++.
Ну или не "снаружи", а "под капотом".
Или "в тёмных глубинах" - именно в этом суть хтоничности исполнителей Кумира.
У Кумира были все шансы быть функциональным языком, с массовым параллелелизмом,
если бы во время его создания было такое умопомешательство.
Итак, если мы хотим программировать для Web, то в обычных терминах нам нужны
объекты
"запрос" (заголовки, параметры запроса, куки, данные POST если есть),
"ответ" (заголовки ответа, куки) и
"контекст" (например хранить в памяти данные соответствующие сессии).
Делаем из этого одного исполнителя, называем его исполитель "Собеседник",
внутрь засовываем реализацию сразу всего, что относится к запросу, ответу и контексту,
кодируем на C++, добавляем в проект и затем
пользуемся из Кумира в синтаксисе Кумира.
На примере исполнителя "чертёжник":
src/actors/draw
мы видим функции-члены на C++
и биндинги к ним при помощи json
на C++:
void runSetupPen();
void runReleasePen();
void runSetPenColor(const Color& color);
void runMoveTo(const qreal x, const qreal y);
void runMoveBy(const qreal dX, const qreal dY);
в json:
"methods": [
{
"name": {"ascii": "setup pen", "ru_RU": "опустить перо"},
"async": false
},
{
"name": {"ascii": "release pen", "ru_RU": "поднять перо"},
"async": false
},
{
"name": {"ascii": "set pen color", "ru_RU": "выбрать чернила"},
"async": false,
"arguments": [
{"baseType": "color", "name": "color"}
]
},
{
"name": {"ascii": "move to", "ru_RU": "сместиться в точку"},
"arguments": [
{"baseType": "double", "name": "x"},
{"baseType": "double", "name": "y"}
]
},
{
"name": {"ascii": "move by", "ru_RU": "сместиться на вектор"},
"arguments": [
{"baseType": "double", "name": "dX"},
{"baseType": "double", "name": "dY"}
]
},
Яр, мне непонятно, что тебе непонятно с написанием вебсайта на Кумире... Пару недель и ты там.
По крайней мере не прийдётся писать парсер и кодогенератор, только код для исполнителя (готовый я не нашел)
учитывая злобность C++ можно делать интеграцию хоть для CGI, хоть для FastCGI.