oop - 闲聊中的矛盾

标签 oop metaprogramming smalltalk squeak

我是 Smalltalk 的新手,是在 Squeak 中学到的。但是我发现 Smalltalk 中有很多令人困惑的东西。在吱吱声中,MetaClassMetaClass class互相都是对方的类(class)。如果我想创建对象 MetaClass我应该发消息new到它的类是 MetaClass class .但是它必须首先作为对象存在才能接受消息。所以我必须创建对象 MetaClass class首先,这只能通过发送消息 new 来完成到对象 MetaClass尚未创建。所以这是一个先有鸡还是先有蛋的问题。

当然我现在可以在 Squeak 中创建对象,因为 MetaClassMetaClass class当 Squeak 打开时,对象已经自动创建。但我不知道怎么做。也许它们是通过发送消息以某种方式创建的。但是这与 Smalltalk 的精神相矛盾:除了少数点(变量声明、赋值、返回和原语)之外,一切都是通过发送消息来发生的。

上面的推理有什么问题吗?提前致谢。

最佳答案

“自动创建”过程实际上被称为 bootstrapping .这就是解决鸡和蛋问题的方法。一旦系统被引导,其余的都可以用系统本身来表达。因此,这与 Smalltalk 的哲学没有矛盾,即一切都通过发送消息发生,因为它只有在引导后才成为 Smalltalk 系统。

关于oop - 闲聊中的矛盾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17176380/

相关文章:

python - 如果程序中只有一个类,是否有任何理由在 Python 中使用类?

C++检测是否存在按名称接受特定类型的函数

smalltalk - Pharo 4.0 中的类和实例变量和方法的语法

smalltalk - 将 SmallInteger 子类化以表示数字事物?

java - 子类中的每个函数都必须在父类(super class)中定义吗?

javascript - 我如何为 HTML 表单创建一个 javascript 对象

ruby-on-rails - 动态定义关注的类和实例方法

class - 类问题( super 新)

java - 根据字符串标识符检查对象字段

python - Python 中的动态/运行时方法创建(代码生成)