dav*_*ola 18 serialization persistence smalltalk interpreted-language
在smalltalk中,您可以将世界状态保存到图像文件中.我认为这与Smalltalk自身"序列化"的能力有关 - 也就是说,对象可以生成自己的源代码.
1)这是一个准确的理解吗?
2)将这种能力添加到现代语言中的挑战是什么(非lisp,显然)?
3)"序列化"是正确的词吗?什么是正确的行话?
Ber*_*erg 15
它比"序列化"简单得多.Smalltalk图像只是对象内存的快照.它占用整个RAM内容(在垃圾收集之后)并将其转储到文件中.在启动时,它将该快照从磁盘加载到RAM中并继续处理它停止的位置.有一些钩子可以对快照和恢复时执行特殊操作,但基本上这就是它的工作原理.
(补充说:请参阅下面的Lukas Renggli的评论,其中一个关键的设计选择使其与其他环境相比如此简单)
扩展Bert Freudenberg的优秀答案.
1)这是否(即对象能够序列化自己的源代码)是否准确理解?
不.正如Bert所指出的,Smalltalk图像只是一个内存快照.Smalltalk对象和Smalltalk程序的单一事实来源是它们的内存表示.这与其他语言存在巨大差异,其中程序表示为文本文件.
2)将这种能力添加到现代语言中的挑战是什么(非lisp,显然)?
从技术上讲,对于大多数语言来说,应该可以从内存快照引导应用程序.如果我没有弄错,有些解决方案使用这种方法来加速Java应用程序的启动时间.您必须同意规范内存表示,并且您需要注意在重新启动程序时重新初始化本机资源.例如,在Smalltalk中,重新打开打开的文件和网络连接.而且,还有一个启动挂钩来修复数字的字节序.
3)"序列化"是正确的词吗?什么是正确的行话?
休眠就是这个词.
归档时间: |
|
查看次数: |
753 次 |
最近记录: |