Я видел 3 разных виртуальных машины, изучая Smalltalk. Это писк/фаро/новояз. В чем разница между ними?
Чем отличаются виртуальные машины Squeak/Pharo/Newspeak Smalltalk?
Ответы (3)
Виртуальная машина для Smalltalk довольно проста. Он содержит набор примитивных инструкций, на которые непосредственно ссылаются код Smalltalk. Это делает фактическую виртуальную машину легко подключаемой. Поэтому Squeak часто используется для экспериментов с виртуальной машиной.
Pharo — это проект, призванный заменить базовую библиотеку Squeaks, поскольку внешний вид Squeak несколько устарел. Он использует Squeak VM и в основном совместим, но интерфейс совершенно другой.
На стороне виртуальной машины Squeak есть ванильная виртуальная машина. Насколько я знаю, он начался как часть проекта Squeak и используется до сих пор.
Некоторое время назад Элиот Миранда, исследователь виртуальных машин, объявил, что разрабатывает новую оптимизированную виртуальную машину для Squeak. Cog имеет открытый исходный код и может использоваться с Squeak и Pharo. Он все еще активно развивается, но работает быстрее, чем базовая ВМ.
Новояз — это совсем другое животное. Это эксперимент по созданию языка, который использует чистую передачу сообщений в качестве единственного примитива языка. Он основан на Squeak VM, но не на Smalltalk. Дополнительную информацию об этом можно найти на странице http://bracha.org/Site/Newspeak.html. .
Squeak и Pharo — это разные диалекты Smalltalk, а Newspeak — другой язык, хотя и вдохновленный и во многом похожий на Smalltalk и Self.
Что касается Squeak и Pharo, поскольку Pharo является ответвлением Squeak, они оба работают на одной и той же виртуальной машине, они зависят от одного и того же набора инструкций VM и набора примитивов.
Что касается виртуальных машин Squeak и Pharo, существует несколько версий, но 2 наиболее важных типа — это классическая Squeak VM и новая виртуальная машина Cog на основе jit. Но оба они выполняют в основном один и тот же набор инструкций.
Пока мы занимаемся виртуальными машинами sqeak и pharo, интересно, что вы можете взломать свою собственную виртуальную машину, исходники доступны и написаны на подмножестве Smalltalk, а также есть набор инструментов, который позволяет вам вносить изменения и создавать свою собственную виртуальную машину. Существует отличная серия постов от Мариано Мартинеса Пека, в которых описывается, как играть с виртуальной машиной, вот вступительный пост:
http://marianopeck.wordpress.com/2011/03/31/journey-through-the-vm/
И Squeak, и Pharo пока используют одну и ту же виртуальную машину. Новояз имеет свой собственный, который берет свое начало от Squeak VM.