Что такое «образ» Smalltalk? - PullRequest
       6

Что такое «образ» Smalltalk?

26 голосов
/ 25 августа 2010

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

Ответы [ 7 ]

23 голосов
/ 25 августа 2010

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

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

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

18 голосов
/ 01 сентября 2010

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

8 голосов
/ 25 августа 2010

Когда виртуальная машина smalltalk запускается, она загружает сохраненное состояние объектов (да: включая открытые файловые потоки, окна, потоки и т. Д.) Из «образа» в свою память и возобновляет выполнение с того места, на котором она оставалась при сохранении изображения.В любой момент во время вашей работы вы можете «сохранить изображение» (иначе: снимок текущего общего состояния) в файл изображения.Вы можете хранить несколько изображений на вашем диске.Полезно, если вы работаете над разными проектами.Изображения часто (но не во всех системах SmallTalk) переносимы между архитектурами;Например, Squeak-изображение может быть загружено в бот Windows и Mac (и даже Android) Squeak VM.Изображения не переносимы между диалектами, а иногда и между версиями внутри диалекта.

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

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

2 голосов
/ 25 августа 2010

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

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

НТН

2 голосов
/ 25 августа 2010

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

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

Второй удар по Google.

1 голос
/ 07 ноября 2015

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

0 голосов
/ 18 сентября 2010

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

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

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

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

...