我想错了。我原以为Smalltalk是一成不变的东西,但最近我意识到Smalltalk被分离成VM和image。在这种情况下,我可以调用VM是必不可少的部分,而图像只是应用程序的集合。语言语法只是用来制作图像代码的助手。
这让我有了一些问题。
发布于 2013-03-14 13:12:33
我将试着回答你的问题(你一定会提供更多的细节):
Smalltalk有多种方言,这意味着Image+Vm有许多组合。其中一些是法罗,吱吱声,VisualWorks,海豚,GNU Smalltalk,琥珀色,宝石 (我肯定会错过更多)。但是,每个映像都以其特定的VM运行,因为原语或内存管理是由每个VM定义的。事实上,取决于Smalltalk的风格,我的图像甚至在主要版本之间也是不兼容的。
话虽如此,been是一个特定的web框架,它已经移植到不同的Smalltalk风格。因此,您可以在一个St (例如Pharo)中编写一个基于海边的应用程序,并在导入到另一个St (例如Gemstone)时导出代码。
这似乎所有Smalltalk VM都应该完全兼容。至少在一组特性和执行源代码。这是真的吗?
是的,在大多数Smalltalk中,基本的概念思想是相同的。如果您想要与风味兼容,您应该尝试坚持ANSI Smalltalk规范,您将能够(与一些头痛:)移动代码的方言。但是,请注意,这并不是通常的事情,因为大多数时候您将使用一个特定的组合(也许Squeak/ <=> Gemstone组合是最常见的,而且AFAIK非常好)。
有没有可能在光秃秃的VM上建立我自己的形象?这是不实际的,但应该是很好的学习。
正如我之前说过的,在一个图像中有很多事情是您应该处理的,以便做到这一点。所以,从技术上讲,你可以,实际上,这很难。马里亚诺( Mariano )推出了一系列名为“虚拟机之旅”( 博客帖子 )的小Smalltalk,你可以从中找到有趣之处。此外,AFAIK蒂姆·巴德( Tim )创建了小Smalltalk作为学习来源(我需要找到这句话:( ))。无论如何,有无数人构建自己的Smalltalk VM来学习他们的工作原理。这是一项艰苦的工作,但你肯定会学到很多东西(我知道你要求建立一个形象,但知道你也可以构建一个VM)。哦,你也可能对此链接感兴趣。
HTH
发布于 2013-03-14 18:29:57
为了回答问题3,关于形象创造,另一个POV是基于生物学隐喻。
从头开始创建一个图像是非常困难的,就像从头开始构建一个活的细胞是非常困难的:有许多交互作用需要考虑(造物论者会说你必须是某种上帝才能做到这一点)。
但是,克隆图像是一项非常容易的操作,因为克隆一个单元格(只需让它自己克隆)。这是如此容易,我们通常只是克隆-例如,斯奎克和法老图片已经有几十年的历史-看到有趣的讨论,关于一个对象的生活在网站上的http://forum.world.st/About-a-object-life-td4653839.html。
请注意,gnu-Smalltalk拥有从零开始组装映像的所有工具,而且法老计划重新创建这样的工具。
最后一点,Squeak关心向后兼容性,最近的解释器VM仍然提供了运行十年前冻结的映像所必需的接口。
发布于 2013-03-14 14:55:35
不同厂商的Smallatalk通常不兼容,一个VM保存的映像不能加载到另一个VM中,至少不能直接加载。例外是Squeak和法老图像共享(或大多数情况下)相同的VM接口。
海滨程序可以(也可以做)作为源包在不同VM的映像之间传输。
尽管需要对VM有很好的理解,但从零开始构建映像是可能的。您可能会发现勺子系统很有趣。
https://stackoverflow.com/questions/15409567
复制相似问题