Связь виртуальной машины Smalltalk и образа?


Я думал неправильно. Я думал, что Smalltalk-это монолитный материал, но недавно я понял, что Smalltalk разделен на VM и image. И в этом случае я могу назвать виртуальную машину существенной частью, а образ - просто набором приложений. Синтаксис языка - это просто помощник для создания кода изображения.

И это заставило меня задать несколько вопросов.

  1. Кажется возможным запустить образ на любой виртуальной машине Smalltalk. Это правда? Например, могу ли я запустить Seaside из любого Smalltalk ВМ?

  2. Похоже, все виртуальные машины Smalltalk должны быть полностью совместимы. По крайней мере, в наборе функций и исполняемых исходных кодов. Это правда?

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

5 2

5 ответов:

Я постараюсь ответить на ваши вопросы (вы, конечно, другие Smalltalkers здесь предоставят более подробную информацию):

  1. похоже, что это возможно при запуске образа на любой виртуальной машине Smalltalk. Возможно ли это? Например, можно ли запустить Seaside с любой виртуальной машины Smalltalk?

Smalltalk имеет много диалектов, что означает, что существует много комбинаций Image+Vm. Некоторые из них Pharo, писк, визуальные работы, Дельфин, GNU Smalltalk, Янтарь, драгоценный камень (и я, конечно, пропустил еще несколько). Однако каждый образ работает со своей конкретной виртуальной машиной, поскольку такие вещи, как примитивы или управление памятью, определяются каждой виртуальной машиной. На самом деле, в зависимости от вкуса Smalltalk, изображения могут быть несовместимы даже между основными релизами.

Сказав это, Seaside-это особый веб-фреймворк, который был портирован на различные Smalltalk-версии. Таким образом, вы можете написать приложение на основе моря в одном Ст (например Фаро) и экспортировать код собственной импортировать его в другой ст (например, драгоценный камень).

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

Да, Основнаяконцептуальная идея одинакова в большинстве небольших разговоров. Если вы хотите быть совместимым со вкусом, вам следует придерживаться спецификаций ANSI Smalltalk, и вы сможете (с некоторыми головными болями :)) перемещать код по диалектам. Однако обратите внимание что это не обычная вещь, так как большую часть времени вы будете работать с конкретным (возможно, комбинация писк/Фаро является наиболее распространенной, и AFAIK она работает довольно хорошо).

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

Как я уже говорил, внутри образа есть много вещей, о которых вы должны позаботиться, чтобы сделать это. Так что, технически, да, вы можете, практически, Это тяжело. Там была серия сообщений в блоге от Мариано под названием "Путешествие через Виртуальную Машину", которые вы можете найти интересными. Кроме того, АФАИК Тим Бадд создалLittle Smalltalk в качестве учебного источника (мне нужно найти цитату :( ). В любом случае, есть бесчисленные примеры людей, которые создают свои собственные Smalltalk VM, чтобы узнать, как они работают. Это тяжелая работа, но вы обязательно многому научитесь (я знаю, что вы просили построить образ, но может быть полезно знать, что вы также можно построить виртуальную машину). О, вы также можете быть заинтересованы в этой ссылке.

HTH

Чтобы ответить на вопрос 3), О создании образа, другой POV основан на биологической метафоре.

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

Однако клонирование изображения-это очень простая операция, как клонирование клетки (вы просто позволяете ей клонировать себя). Это так просто, что мы обычно просто клонируем - например, Изображениям писка и Фаро уже больше десяти лет-смотрите забавную дискуссию о жизни объекта в списке рассылки squeak-dev http://forum.world.st/About-a-object-life-td4653839.html .

Обратите внимание, что gnu-Smalltalk имеет все инструменты для сборки образа с нуля, и именно в Pharo планируется воссоздать такие инструменты.

Последний пункт, писк заботится о обратной совместимости и недавний интерпретатор VM все еще предоставляет необходимый интерфейс для запуска образа замороженного a десять лет назад.

Виртуальные машины Smallatalk от разных производителей обычно несовместимы, и образ, сохраненный с одной виртуальной машиной, не может быть загружен в другую, по крайней мере напрямую. Исключением является то, что образы Squeak и Pharo совместно используют (или большую часть времени) один и тот же интерфейс виртуальной машины.

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

Можно построить свой образ с нуля, хотя потребуется хорошее понимание виртуальной машины. Вы можете найти ложка система интересная.

ВМ-это прослойка между байт-код Smalltalk и системы. Таким образом, основная идея заключается в том, что при выполнении 4 + 5 ВМ называется примитивом, который выполняет соответствующие машинные коды для суммирования этого материала, поскольку процессор не знает, что такое "объект". Так что вы не можете ничего ни на чем запустить. Вот почему nbcog присутствует. Native Boost нуждается в некоторых специальных примитивах, которые не реализованы в Cog vm, поэтому он будет работать только на NBCog. Я не понимаю Вашего 3-го вопроса. ВМ принимает байт-код smalltalk и выводит машинный код. Что такое голая кость ВМ?

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