简体   繁体   English

ANSI Smalltalk和Smalltalk-80有什么区别?

[英]What's the difference of ANSI Smalltalk and Smalltalk-80?

I discovered there is no mentioning about thisContext in ANSI Smalltalk specification (draft). 我发现在ANSI Smalltalk规范(草案)中没有提到thisContext

I assumed ANSI Smalltalk as standardized Smalltalk-80, so I can't understand why it's not there. 我假设ANSI Smalltalk是标准化的Smalltalk-80,所以我无法理解它为什么不存在。 What's the difference of them? 它们的区别是什么?

Smalltalk-80 refers to a very specific thing: the version of Smalltalk that was in use at Xerox Parc back in 1980. While there are many Smalltalks that are based, either in a direct sense (Squeak and Pharo) or an ideological sense (Ambrai Smalltalk and GNU Smalltalk), on that environment, there are no Smalltalks around today that actually fully adhere to the language and virtual machine described in that book. Smalltalk-80指的是一个非常具体的东西:1980年在Xerox Parc中使用的Smalltalk版本。虽然有许多Smalltalks是基于直接意义上的(Squeak和Pharo)或意识形态意义上的(Ambrai) Smalltalk和GNU Smalltalk),在这种环境下,今天没有Smalltalk实际上完全遵循该书中描述的语言和虚拟机。 Even Squeak, which is probably the closest ideologically, has some major deviations: Squeak has closures, Smalltalk-80 does not; 即使Squeak,可能是最接近意识形态的,也有一些重大偏差:Squeak有封闭,Smalltalk-80没有; Squeak has Unicode, Smalltalk-80 does not; Squeak有Unicode,Smalltalk-80没有; Squeak's VM supports and uses named primitives, Smalltalk-80 does not; Squeak的VM支持并使用命名原语,Smalltalk-80不支持; Squeak support some bytecodes that Smalltalk-80 does not; Squeak支持Smalltalk-80没有的一些字节码; and so on. 等等。

ANSI Smalltalk, like ANSI Common Lisp, attempted to define a standard that incorporate a common subset of Smalltalk functionality across the major Smalltalk implementations. ANSI Smalltalk与ANSI Common Lisp一样,试图定义一个标准,该标准在主要的Smalltalk实现中包含Smalltalk功能的公共子集。 Since the ANSI standard was written in 1998, it had to take into account far more than just the original implementation. 由于ANSI标准是在1998年编写的,因此它必须考虑的不仅仅是原始实现。 In particular, some at-the-time major Smalltalks, such as Smalltalk MT and VisualAge Smalltalk, lacked continuations entirely (and a thisContext variable as a result). 特别是,一些主要的Smalltalks,如Smalltalk MT和VisualAge Smalltalk,完全没有延续(结果是一个thisContext变量)。 That feature is therefore absent from the ANSI standard. 因此,ANSI标准中不存在该特征。

In practice, these differences are somewhat academic. 在实践中,这些差异在某种程 You're worried about thisContext , but GNU Smalltalk has a radically different syntax, VisualWorks has namespaces, Squeak has Traits, Pharo lacks MVC...there are simply more pressing differences. 你担心这个thisContext ,但是GNU Smalltalk的语法完全不同,VisualWorks有命名空间,Squeak有Traits,Pharo缺少MVC ...还有更多的紧迫差异。 Smalltalk-80 and the ANSI Smalltalk draft are both more guidelines than anything else at this point in Smalltalk's life. 在Smalltalk的生活中,Smalltalk-80和ANSI Smalltalk草案在这一点上都比其他任何指南都要多。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM