По очень мягкому пожеланию
serj_aleks изложу на уровне тезисов некоторые идеи.
1. Мы имеем одновременно множество контекстов, множество слоев абстрагирования и детализации. Самому рисовать не хотелось, поэтому для образа утянул наиболее подходящую картинку.
2. На текущий момент мы имеем системы, части которых лежат на разных этажах абстракции. Эти смешения преждевременно оптимизируют, из-за а) отсутствия представления о слоях абстракции и инструменте, позволяющим развести все части по своим этажам и б) из-за нехватки времени на отраслевой анализ, все заняты решением прикладных задач. На выходе мы получаем множество конкурирующих и пересекающихся ДСЛ-ей.(Предметно-ориентированных языков) Решений заточенных под выделенные системы, представления о которых сложилось не на базе парадигмы метамоделирования, а стихийно. И если представить, что какой-то узел лежит в одном слое, два других в другом, и т.д. Т.е. узлы хаотично лежат в разных слоях, то подойдет такой рисунок.
3. Из-за этого, предметно-ориентированные языки пересекают несколько контекстных плоскостей. Одновременно занимают сущности из языков разного уровня от 0-языка до n- языка.
4. Именно п.3. лежит в основе того факта, что сложившиеся программные системы вновь разбираются, где-то что-то подкручивается, и появляется псевдо-новое. Со своими локальными успехами, но так же обреченными на разборку и переделку.
5. При этом слои связаны между собой степенью абстрации и дифференциации (что это для другого раза). Но идейно это можно понять если посмотреть на этот рисунок. Глядя на рисунок, считать что граница между компиляторами и степенью оптимизации кода (который должен быть на разных языках, от 0-языка до n-языка)
6. Исходный код - это код моделей. То, что deep_econom обозначил как ((*,*),(*,*)), как мягкая модель. А Рич Хикки изобразил как
В то же время оптимизированный и не оптимизированный код - это код жесткой модели, привязанный к конкретному вычислителю, если говорить на языке характерном для обсуждения машины Тьюринга и алгоритмов.
7. Разница между мягкой и жесткой моделью в степени дифференциации объективного мира.
8. Конкретные вычислители, вобрав в себя семантический концепт «тип» будут представлять из себя паукообразных агентов. Подобно zipper'aм на структурах данных, будут пробегать слои, фиксироваться и перемещаться среди контекстных слоев в зависимости от частого исполнения кода, все сильнее вжиматься в жесткие модели. И при рассогласованиях откатываться к более раннему состоянию, шаг за шагом к более стабильному существованию. При множественном совпадении результатов (на фоне холодного кода), наоборот проявлять поисковую активность с заходом в слабые модели.
9. Такие агенты способны различать ожидаемый результат и получаемый результат. Способны помнить цепочку подкреплений. И на основе данной информации определять состояние в множестве стратегий, открывая и закрывая дифференцированные слои - что и есть в своей сути «эмоция». Фактически механизм переключения с компилятора fullcodegen на компилятор Cranshaft - есть прообраз эмоционального агента.