Quintanar wrote:
> Думаю, для любого интерпретируемого языка с проверкой типов во время > исполнения такое элементарно реализовывается. > Классический пример — Лисп.
Хочу сделать поправку. Лисп -- не интерпретируемый язык.
(common lisp).
md03t4 wrote:
> Для любого интерпретируемого, или любого функционального?
На самом деле это всё неважно.
> Как выгрузить модуль (любую другую единицу компиляции), если ссылки на > его переменные могут быть сохранены в других модулях?
в common lisp ВСЕ определения/переопределения ВСЕХ элементов
программ происходят ВСЕГДА на ходу, т.е. при возможно уже
определённых в лисп-машине этих же элементах. Это — штатный
режим работы лисп-машины. При этом даже инстансы объектов
изменяемых классов сохраняются, только их поля меняются/
добавляются/удаляются, и даже есть возможность эти изменения
программно обработать. Что про "Ссылки на переменные" ...
Переменные вообще-то сами являются ссылками. Так что не очень
понятно, что имеется в виду.
Другое дело, что не все реализации common lisp поддерживают
реальную многозадачность, или вообще какую-то многозадачность,
а вот как с переопределением на ходу в уже поддерживающих
многозадачность лиспах, -- это вопрос "честности" реализаций.
Здравствуйте, Aen Sidhe, Вы писали:
AS>Ну, к существующим нельзя так вот просто сделать. К новым — легко. Буквально, одна строка кода/одна настройка в конфиге
Здравствуйте, md03t4, Вы писали:
M>Я знаю, что subj реализован в Erlang-е. M>Есть ли еще языки/системы, где реализован похожий функционал?
Дай точное определение, о чем идет речь. Иначе я тебе заявлю, что на ассемблере ты можешь заменять на лету все, что тебе в голову придет, вплоть до генерации нового кода на основе данных, полученных откуда угодно.
Здравствуйте, IT, Вы писали:
IT>>>Возможно. C>>Как? IT>Домен можно загрузить по-новой, не выгружая старый пока он выполняет запросы.
Не, ну я так хоть в С++ сделаю перезагрузку кода. Это не то.
Здравствуйте, Cyberax, Вы писали:
IT>>Домен можно загрузить по-новой, не выгружая старый пока он выполняет запросы. C>Не, ну я так хоть в С++ сделаю перезагрузку кода. Это не то.
Как?
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, IT, Вы писали:
IT>Здравствуйте, Cyberax, Вы писали:
IT>>>Домен можно загрузить по-новой, не выгружая старый пока он выполняет запросы. C>>Не, ну я так хоть в С++ сделаю перезагрузку кода. Это не то.
IT>Как?
Сэмулирует эти же самые домены, скорее всего. Просто граждане не понимаю, что единственное различие — единица перезагрузки. Штатными средствами, без приседаний в .NET — это домен, где-то метод, где-то класс.
Здравствуйте, IT, Вы писали:
IT>>>Домен можно загрузить по-новой, не выгружая старый пока он выполняет запросы. C>>Не, ну я так хоть в С++ сделаю перезагрузку кода. Это не то. IT>Как?
Загружаем DLL с новым кодом и вперёд с песней. Ну или в случае CGI — просто отправляем новые запросы новому exe-шнику.
Здравствуйте, IT, Вы писали:
C>>Загружаем DLL с новым кодом и вперёд с песней. IT>Ты сам пробовал?
Да. Использовалось для переключения между software и hardware реализациями OpenGL.
Разница с С# тут будет в чисто процессуальных вопросах.
Здравствуйте, IT, Вы писали:
C>>Разница с С# тут будет в чисто процессуальных вопросах. IT>Т.е. замена кода на лету возможна не только в Эрланге, а практически везде. Почему же тогда считается, что эта фича есть только в нём?
Потому, что в Эрланге она намного мощнее. Тут я это уже объяснял.
Здравствуйте, Cyberax, Вы писали:
C>Здравствуйте, IT, Вы писали:
C>>>Разница с С# тут будет в чисто процессуальных вопросах. IT>>Т.е. замена кода на лету возможна не только в Эрланге, а практически везде. Почему же тогда считается, что эта фича есть только в нём? C>Потому, что в Эрланге она намного мощнее. Тут я это уже объяснял.
Угу. Майбах может ездить. И ауди может ездить. Но майбах делает это круче, поэтому ауди не ездит.
Здравствуйте, Cyberax, Вы писали:
AS>>А как же тогда ASP.NET работает? Перезаписал dll, код для новых запросов — новый. C>А ещё можно приложение перезапустить. Тоже код заменится!
А какая разница то, если состояние один фиг остается целым?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.