La confusión de la paradoja de clase / objeto
En el libro The Well Grounded Rubyist extract), David Black habla sobre la "paradoja de pollo y huevo de clase / objeto". Me está costando entender todo el concepto.
Puede alguien explicarlo en términos mejores / más fáciles / analógicos / otros?
Quote (énfasis mío):
La claseClass
es una instancia de sí mismo; es decir, es unaClass
objeto. Y hay más. Recuerda la claseObject
? Bien,Object
es una clase ... pero las clases son objetos. Asi que,Object
es un objeto. YClass
es una clase. YObject
es una clase yClass
es un objeto.
¿Cuál vino primero? ¿Cómo puede la claseClass
se creará a menos que la claseObject
¿ya existe? Pero, ¿cómo puede haber una claseObject
(o cualquier otra clase) hasta que haya una claseClass
de los cuales puede haber instancias?
La mejor manera de lidiar con esta paradoja, al menos por ahora, es ignorarla. Ruby tiene que hacer algunas de estas cosas de huevo o gallina para poner en funcionamiento la clase y el sistema de objetos, y luego, la circularidad y las paradojas no importan. En el curso de la programación, solo necesita saber que las clases son objetos, instancias de la clase llamadaClass
.
(Si desea saber brevemente cómo funciona, es así: cada objeto tiene un registro interno de qué clase es una instancia, y el registro interno dentro del objetoClass
señala de nuevo aClass
.)