Подтвердить что ты не робот

Что дает Smalltalk способность выполнять постоянство изображения, и почему не могут такие языки, как Ruby/Python, сериализоваться?

В smalltalk вы можете сохранить состояние мира в файл изображения. Я предполагаю, что это связано с возможностью Smalltalk "сериализовать" себя, то есть объекты могут создавать собственный исходный код.

1) Это точное понимание?

2) Какова задача добавления этой способности к современным языкам (не-w130 > , очевидно)?

3) Является ли "сериализация" правильным словом? Какой правильный жаргон?

4b9b3361

Ответ 1

Это намного проще, чем "сериализация". Изображение Smalltalk представляет собой просто снимок памяти объекта. Он принимает содержимое всей ОЗУ (после сбора мусора) и выгружает его в файл. При запуске он загружает этот снимок с диска в ОЗУ и продолжает обработку, где он остановился. Есть несколько крючков для выполнения специальных действий в моментальном снимке и при возобновлении, но в основном это то, как это работает.

(добавлено: см. комментарий Lukas Renggli ниже для важного выбора дизайна, который делает его настолько простым по сравнению с другими средами)

Ответ 2

Продолжая превосходный ответ Берта Фройденберга.

1) Является ли это (то есть способность объекта сериализовать собственный исходный код) точным пониманием?

Неа. Как отметил Берт, изображение Smalltalk представляет собой просто снимок памяти. Их единственным источником правды как объектов Smalltalk, так и программ Smalltalk является их представление памяти. Это огромная разница с другими языками, где программы представлены в виде текстовых файлов.

2) Какова задача добавления этой способности к современным языкам (не-w130 > , очевидно)?

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

3) Является ли "сериализация" правильным словом? Какой правильный жаргон?

Спящий режим - это термин.

Ответ 3

Это происходит уже в том случае, когда вы кладете компьютер в режим сна, не так ли? Ядро записывает запущенные программы на диск и загружает их позже? Предположительно, ядро ​​могло перемещать запущенную программу на новую машину по сети, предполагая ту же архитектуру на другом конце? Java может сериализовать все объекты также из-за JVM, правильно? Может быть, препятствие - это просто архитектура, подразумевающая разнообразные макеты памяти?

Изменить: Но я думаю, вы заинтересованы в использовании этой функции из самой программы. Поэтому я думаю, что это просто вопрос реализации функции в интерпретаторе Python/Ruby и stdlib и наличие какой-то виртуальной машины, если вы хотите переместиться на другую аппаратную архитектуру.

Ответ 4

Важнейшая разница заключается в том, что Smalltalk рассматривает Программу как совокупность объектов. И IDE - это всего лишь куча редакторов, редактирующих эти объекты, поэтому, когда вы сохраняете изображение с фотографией, весь ваш код там, как и когда вы остановились.

Для других языков это может быть возможно, но я думаю, что будет больше возиться, в зависимости от того, насколько отражено это. На большинстве других языков отражение происходит как дополнение или даже задумчивость, но в Smalltalk оно находится в самом сердце системы.