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

Что такое изображение Smalltalk?

Что такое изображение Smalltalk? Это похоже на сериализацию времени выполнения Smalltalk?

4b9b3361

Ответ 1

Самые популярные системы программирования разделяют программный код (в виде определений классов, функций или процедур) из состояния программы (например, объектов или других форм данных приложения). Они загружают программный код при запуске приложения, и любое предыдущее состояние приложения необходимо явно воссоздавать из файлов конфигурации или других источников данных. Любые настройки, которые программа-программист явно не сохраняет, вы должны создавать резервные копии при каждом перезапуске.

Однако многие системы Smalltalk не различают прикладные данные (объекты) и код (классы). На самом деле классы - это сами объекты. Поэтому большинство систем Smalltalk сохраняют все состояние приложения (включая объекты класса и некласса) в файле изображения. Затем изображение может быть загружено виртуальной машиной Smalltalk для восстановления подобной Smalltalk системе в предыдущем состоянии.

http://en.wikipedia.org/wiki/Smalltalk#Image-based_persistence

Ответ 2

Изображение Smalltalk - очень интересный зверь. Посмотрите на это как на бессмертие. Многие современные системы Smalltalk, Pharo, Squeak, VisualWorks среди них, имеют общий предок, то есть изображение Smalltalk от Xerox PARC. Однако этот общий предок не является чем-то отдаленным, но на самом деле все еще жив в этих современных системах. Современные варианты были созданы путем отправки сообщений объектам на этом изображении. Некоторые из этих сообщений фактически превратили текущие объекты. Классы являются полномасштабными объектами, а создание новых классов выполняется путем отправки сообщений объектам класса. Некоторые объекты на изображении Smalltalk могут появиться в 1972 году, когда первое изображение Smalltalk загрузилось! Изображения Smalltalk никогда не умирают, они просто исчезают во что-то принципиально иное. Вы должны просмотреть свое приложение, как не принципиально отличное от создания новой версии Smalltalk.

Ответ 3

При запуске smalltalk VM он загружает сохраненное состояние объектов (да: в том числе открытые потоки файлов, окна, потоки и т.д.) из "изображения" в свою память и возобновляет выполнение там, где оно оставалось при сохранении изображения. В любое время вашей работы вы можете "сохранить изображение" (ака: снимок текущего общего состояния) в файл изображения. Вы можете хранить несколько изображений на своем диске. Полезно, если вы работаете над разными проектами. Изображения часто (но не во всех небольших системах) переносимы по архитектурам; например, изображение скрипа может быть загружено в бот окна и макрос (и даже андроид) squeak VM. Изображения не переносимы по диалектам, а иногда и не по версиям диалекта.

Изображения обычно содержат все - даже отладчик, компилятор, редакторы, браузеры и т.д. Однако для развертывания иногда полезно "вырезать" (т.е. удалить неиспользуемые вещи) из изображения - либо скрыть секреты (;-) или сделать его меньше (для встроенных или мобильных устройств). Большинство Smalltalks не могут жить без изображения, за исключением Smalltalk/X и (я думаю) S # -Smalltalk (но я здесь на тонком льду...)

Чтобы сохранить и транспортировать исходный код, изображения не являются полезными - используйте либо файл в стандартном формате, либо в xml или в любом другом транспортном формате (их много). Изображения также не полезны для сортировки/разборки; используйте xml, binarystorage, базы данных, glorb или любой другой метод сериализации для этого.

Ответ 4

http://book.seaside.st/book/getting-started/pharo-squeak/what-is-image

Все объекты Smalltalk живут в что-то называется изображением. Изображение снимок памяти, содержащий все объекты в данный момент времени.

Второе попадание в google.

Ответ 5

Я рекомендую вам прочитать http://pharobyexample.org/ В первой главе говорится:

"Текущее изображение системы - это моментальный снимок запущенной системы Pharo, застывшие во времени. Он состоит из двух файлов: файла .image, который содержит состояние всех объектов в системе (включая классы и методы, поскольку они тоже являются объектами) и файл .changes, который содержит журнал всех изменений в исходном коде системы. На рисунке 1.1 эти файлы называются pharo.image и pharo.changes. "

НТН

Ответ 6

Он сериализует все во всей системе, включая все работы по разработке и все пользовательские данные. Все, кроме ядра среды выполнения.

Smalltalk, как и Java, работает на виртуальной машине, работающей с символическим байт-кодом, и содержит низкоуровневые вещи, такие как сборщик мусора. Это делает Smalltalk очень портативным, а также очень удобным для записи в одно место.

Неудивительно, что это было вдохновением для Java. Таким образом, Smalltalk VM (StVM) является эквивалентом среды выполнения Java.

В Smalltalk все остальное хранится в ОЗУ. Кодовая база, которая динамически компилируется на лету для StVM. Все данные объекта, которые вы создали, запустили приложения с вертикальным и горизонтальным конечным пользователем. Все настройки, которые вы сделали для среды окон и ее внешний вид. Весь новый код, который вы написали. Песня, которую вы загрузили на виртуальную машину, чтобы играть в музыкальном проигрывателе. Любые другие данные, код или объекты, которые вы используете или загрузили.

Все это находится в памяти ПК.

Периодически вы можете сохранить текущее состояние на диск. Когда вы это сделаете, вы мгновенно замораживаете Smalltalk VM и копируете все в один диск файл. Этот файл-диск называется файлом изображения, и по умолчанию он будет иметь суффикс .image в большинстве дистрибутивов на ПК (независимо от того, работают ли они на Linux, MacOS, Windows или RiscOS).

Это похоже на то, как вы сохраняете свою незавершенную работу, когда находитесь в текстовом процессоре или электронной таблице на обычном ПК. За исключением того, что это сохранение включает в себя последнюю версию кода электронной таблицы, из которой сделано приложение электронной таблицы.

У системы Smalltalk есть другие способы защиты ваших данных. Если вы разрабатываете какое-либо программное обеспечение или изменяете какую-либо кодовую базу, в которой записана система Smalltalk, она регистрирует каждое изменение на диске в режиме реального времени.

У вас есть возможность написать код или загрузить приложение, которое может сохранить исходный код и связанные с ним структуры данных, распределенные репозитории исходного кода или репозитории на вашем локальном диске. Или в реляционные базы данных. Или для объектных баз данных или новых модных баз данных NoSQL.

Большинство предварительно написанных приложений на лету резервируют данные на диск или базу данных.

Изображение представляет собой сохранение всей системы Smalltalk (кроме виртуальной машины). Виртуальная машина эквивалентна среде выполнения Java. Все остальное хранится в изображении.

Напишите новую файловую систему для доступа к базовым дискам ОС? Это в образе. (и все изменения также были записаны на диск автоматически системой Smalltalk).

Введите целую кучу данных в базу данных объектов на основе изображений Smalltalk? Это в образе.

Хотите сделать factory - reset для вашей системы Smalltalk? Просто вернитесь к использованию файла изображения, который вы получили, когда вы впервые установили Smalltalk. Хотите сохранить изображение каждый час в час, а затем восстановить обратно до 4 часов назад? Просто загрузите файл изображения с четырех часов назад.

Изображение - это копия всего, что имеет система Smalltalk в памяти. За исключением небольшой, неизменной, жизненно важной пропорции системы, которая является виртуальной машиной.

Ответ 7

Проще говоря, изображение Smalltalk представляет собой изображение среды Smalltalk, которая была сохранена в данный момент времени. Когда это изображение перезагружается в систему времени исполнения Smalltalk, все происходит так же, как и в момент сохранения изображения.

Изображения, сохраненные одной системой Smalltalk, в общем случае не могут быть загружены другой системой Smalltalk.

Я нахожу работу на основе изображений невероятно мощной. Если меня прервут, я смогу сохранить изображение, и когда я вернусь к нему, я вернусь туда, где был. Отладки, которые были открыты, все еще открыты, ожидая продолжения. Там очень мало "выяснили, как вернуться туда, где я был" - это больше "ОК, пусть продолжит...".

Поделитесь и наслаждайтесь.