我在学习Smalltalk时看到了3个不同的虚拟机。他们是Squeak / Pharo / Newspeak。它们之间有什么区别?
答案 0 :(得分:8)
Squeak和Pharo是Smalltalk的不同方言,而Newspeak是不同的语言,虽然受到启发,并且在许多方面类似于Smalltalk和Self。
至于Squeak和Pharo,由于Pharo是Squeak的分支,它们都运行在同一种虚拟机上,它们依赖于相同的VM指令集和原语集。
至于Squeak和Pharo虚拟机,有几个版本,但有两个最重要的类型是经典的吱吱声VM和新的基于jit的虚拟机。但是它们都执行通常相同的指令集。
当我们在sqeak和pharo虚拟机时,有趣的是你可以破解你自己的虚拟机,可用资源并用Smalltalk子集编写,并且有工具集可以让你进行更改并构建自己的虚拟机。马里亚诺·马丁内斯·派克(Mariano Martinez Peck)的一系列帖子描述了如何玩VM,这里是介绍性帖子:
http://marianopeck.wordpress.com/2011/03/31/journey-through-the-vm/
答案 1 :(得分:6)
Smalltalk的虚拟机非常基础。它包含一组直接从Smalltalk代码引用的基本指令。这使得实际VM易于插拔。所以Squeak经常用于虚拟机的试验。
Pharo是一个取代Squeaks基本库的项目,因为Squeak的外观和感觉有点过时了。它使用Squeak VM并且大部分兼容,但界面完全不同。
在Squeak的VM端有一个vanilla VM。据我所知,它开始作为Squeak项目的一部分,仍然使用。
不久前,VM公司的研究员艾略特·米兰达宣布他正在为Squeak开发一款新的优化VM。 Cog是开源的,可以与Squeak和Pharo一起使用。它仍然在积极开发,但比基本VM更快。
Newspeak是一个不同的动物。这是一个创建语言的实验,该语言使用纯消息传递作为语言的唯一原语。它基于Squeak VM但不是真正的Smalltalk。您可以在http://bracha.org/Site/Newspeak.html找到更多相关信息。
答案 2 :(得分:4)
到目前为止,Squeak和Pharo共享同一个VM。 Newspeak有自己的,源自Squeak VM。