Русскоязычное программирование

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Русскоязычное программирование » концепции и механизмы языков и рантаймов » Практический смысл горячей замены кода


Практический смысл горячей замены кода

Сообщений 1 страница 3 из 3

1

Уткин спрашивает про корутины, значит мне тоже можно спросить.

Проповедует горячую замену кода Будден. А ещё он много читал про "зиму искусственного интеллекта".
Можно предположить, что он хочет сделать компилятор, который сам себя улучшает во время простоя
(нормальная такая суперидея).

В чём такая крутизна горячей замены кода? Берём обыкновенный C#, делаем там два домена (один и другой, как у Intel в стратегии tick-tock). Ну и, соответственно, работаем как с севооборотом - сначала один домен "под парами" и не используется, а потом другой.
Неиспользуемый домен выгружается, пересоздаётся по-новой и заполняется новым кодом, после чего туда передаётся управление.

Это совершенно стандартная широко распространённая технология, работающая с 2002-го года на 80% десктопов.

Хочет будден, чтобы в рантайме ещё и компилятор был? Ну есть такие динамические библиотеки в C# (и для работы с АСТ тоже).
В общем, объясните, пожалуйста, почему он так взволнован этой темой.

Отредактировано Лис (2018-11-04 10:50:27)

-1

2

utkin
Вопрос не в интерпретаторе. А в синхронизации, непротиворечивости состояний и переменных. А так же их типов.

Сборка мусора и динамическая типизация это только верхушка айзберга. Вернее не так теория сборки мусора и динамической типизации для задачи само патчинга требует координального пересмотра и развития.

0

3

utkin написал(а):

Так не бывает . Либо универсальность либо типы процессора.

Так не про процессор речь. А про типы переменных. Смена переменных бывает к примеру шаблоны в Си++, дженерики в Delphi.

Практическое применение находят в математических библиотках. 

Во-вторых у меня есть моя секретная технология. В совокупности с динамическим патчингом может получится неплохой результат. Вернее только благодаря моей технологии динамический патчинг сможет работать.

utkin написал(а):

А в изобретение велосипеда, первый из которых назывался Бейсик. Ява и JIT - один шаг и у Вас горячая замена кода.  Все что Вам нужно - изначально интерпретировать код.

Интерпреататоры решает только часть проблем.  Взять язык форт в котором был шитый код.

utkin написал(а):

Опять же практическое применение?

У корутинов практическое применение для инициализации USB в UEFI.
Так к же все фремворки JS их поддерживают. Так как запрос одного JSON до 3 секунд из-за тайма-утов. Наличие таймаутов связано с ненадёжность сетей, повышения безопасности и загруженностью сервера.
Без асинхронной обработки у вас бы вся рекламо бы жутко тормозила, а она динамически подтягивается.  В бы не смогли сообщение отправить да и многое чего.

Что касается горячей замены кода, то практическая польза. К примеру создание ИИ с помощью генетических алгоритмов которые будут динамически изменять код. Или с точки срения исследований очень удобно сменить часть кода без пересборки и переррасчётов.

К примеру у меня 15 минут генерируются данные для классификатора, а хотелось бы менять алгоритм классификатора без перевычисления данных. Использовать интерпретатор не очень охото, так как он медленный. Сам классификатор в нативном коде работает 5 минут минимум, а сложные алгоритмы часами.

Отредактировано Павиа (2018-11-04 20:01:09)

0


Вы здесь » Русскоязычное программирование » концепции и механизмы языков и рантаймов » Практический смысл горячей замены кода