Smalltalk中的“image”是什么?它是否类似于序列化Smalltalk运行时?
大多数流行的编程系统将程序代码(以类定义、函数或过程的形式)与程序状态(例如对象或其他形式的应用程序数据)分开。它们在应用程序启动时加载程序代码,并且必须从配置文件或其他数据源显式重新创建任何先前的应用程序状态。如果应用程序员没有明确保存任何设置,那么每次重新启动时都需要重新设置。
然而,许多 Smalltalk 系统不区分应用程序数据(对象)和代码(类)。事实上,类本身就是对象。因此,大多数 Smalltalk 系统将整个应用程序状态(包括类和非类对象)存储在图像文件中。然后,Smalltalk 虚拟机可以加载该图像文件以将类似 Smalltalk 的系统恢复到先前的状态。
Smalltalk镜像是一种非常有趣的存在。可以将其视为一种不朽之物。许多当前的Smalltalk系统,包括Pharo、Squak和VisualWorks等,都有一个共同的祖先,即来自Xerox PARC的Smalltalk镜像。然而,这个共同的祖先并不是什么遥远的东西,而在那些现代系统中仍然存活着。通过向该镜像中的对象发送消息来生成现代变体。其中一些消息实际上会改变当前对象。类是完整的对象,创建新类是通过向类对象发送消息来完成的。Smalltalk镜像中的一些对象可能可以追溯到1972年,当时第一个Smalltalk镜像被引导!Smalltalk镜像永远不会死亡,只会消失成为可能根本不同的东西。您应该将应用程序构建视为与创建新的Smalltalk版本没有本质区别。
想要对Smalltalk系统进行出厂设置吗?只需回到您第一次安装Smalltalk时收到的镜像文件。想要每小时保存图像,并在四小时前恢复吗?只需加载四个小时前的图像文件。
该图像是Smalltalk系统在内存中拷贝的所有内容,除了虚拟机这一小部分不变且至关重要的系统。
http://book.seaside.st/book/getting-started/pharo-squeak/what-is-image
所有的Smalltalk对象都存在于一个被称为“镜像”的东西中。镜像是内存的快照,包含了某个时间点上所有的对象。这是谷歌搜索的第二个结果。在Smalltalk中,所有这些 - 注意可以 - 都可以在影像中完成。 理论上,你可以在已加载的影像中部署Smalltalk应用程序,该影像将带来所有数据和逻辑,并在启动时运行应用程序。 实际上,根据我的经验,出于某些原因,你倾向于不这样做。
如果你留在影像中,你可以随心所欲地使用所有可用资源,好的或坏的。 类是对象,方法是对象,所以你实际上可以做添加
self halt