dollar
@dollar
Делай добро и бросай его в воду.

Есть ли быстрый язык программирования с возможностью динамической перекомпиляции?

То есть, к примеру, что-то меняешь в коде, и в уже запущенном приложении сразу применяются изменения и виден результат.

Теоретически ведь такое возможно. Например, если после завершения работы функции и до нового обращения к ней, подменить её, то ничего фатального не произойдёт. В крайнем случае можно даже поменять её место в памяти, одновременно с этим изменив все адреса, где происходит обращение к ней.

В скриптовых языках с этим проблем нет особых, т.к. функция там часто - отдельный тип данных. Хотя и приходится отдельным образом посылать код функции (скажем, в консоль). А что насчёт быстрых компилируемых языков?

Здесь, кстати, уже немаловажным будет не только скорость языка, но и скорость компиляции, ведь её нужно делать на лету.
  • Вопрос задан
  • 121 просмотр
Решения вопроса 1
@EvgeniiR
https://github.com/EvgeniiR
Actor model мб, Эрланг тот же?
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
inoise
@inoise
Solution Architect, AWS Certified, Serverless
Это не нужно. Blue-green deployment никто не отменял
Ответ написан
@NewDevLab
например, на .Net можно сделать примерно так.
хост приложение:
1. Читает каталог(и) на предмет требуемых сборок.
2. Найденные сборки копирует в папку кеша.
3. Загружает скопированные сборки.
4. Выполняет контракт на инициализацию сборки, передавая ему сохраненное состояние (если оно было).
... дальше сборка живёт своей жизнью, возможно, взаимодействуя с хостом по определённым интерфейсам.
6. Мониторит каталоги на предмет изменения подключенных сборок (также можно смотреть добавление / удаление).
7. Если сборка изменилась, то запрашивает у текущей сборки её текущее состояние.
8. Выгружает ее и копирует себе в кеш новую сборку.
... далее переход в п.4.

Собственно, классический ASP.NET примерно так и работает, благодаря чему, файлы приложения не блокируются при исполнении и доступны к изменению.
Еще в .Net MEF есть.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы