Валерий Лаптев писал(а):
Не. Идея смешанных вычислений в том, чтобы для программы не различались этапы компиляции и выполнения (были "однородными").
Этап компиляции - тоже вычисления. Поэтому - смешанные.
...
Поэтому "построение структур данных, однородно как в runtime, так и compiletime" - это как раз оно и есть.
В общем-то, "это как раз оно", если уж предельно обобщать суть исходного понятия смешанных вычислений. Первично под последним подразумевалась трансформация (автоматическая) представления программы в иной вид, где часть вычислений осуществляется до runtime. Алгоритмическая модель, заданная разработчиком как исполнительные инструкции для runtime, переводится в иную форму вне осознанности самим разработчиком, новая форма в результате преобразований может иметь совсем другой вид, вплоть, фактически, на ином технологическом языке (к примеру, может быть осуществлён методологический переход к понятию автоматов согласно необходимой специализации, в итоге конечная "остаточная" программа может представлять из себя лапшу из goto (вместо исходной "структурности") -- ничего подобного может не быть в исходном "тезаурусе" моделирования у разработчика, у него мозг может сломаться, если вдруг попытается "вручную" выстроить нечто подобное, или вопрос насчёт корректности полученной "выкрученной" модели окажется весьма не простым, и т.д.).
Когда как "обобщённые алгоритмы и структуры данных, однородно как в runtime, так и compiletime" -- осознанная деятельность разработчика, непосредственный репертуар моделирования. И результаты мета-моделирования в compiletime как подготовка исполнительных runtime-инструкций в дальнейшем могут быть поданы на вход смешанному вычислителю. В идеале, видимо, в современных условиях часть репертуара "ручных" compiletime-вычислений может быть функционалом и смешанного вычислителя.
Валерий Лаптев писал(а):
Удивительно, как это все воплощается в С++ через десятилетия.
Однако, не однородно в том смысле, что для "мета-compiletime" и "мета-runtime", фактически, возникают разные технологические языки, в каждом исторически уже имеются целые "парадигмы" (часть из которых в т.ч. есть а-ля deprecated), или разные языки из-за базиса платформы (всякие "фреймворки" диктуют, по сути, свой язык согласно своему API).