Do you believe in OOP? Sometimes object oriented programming seems to boil down to a religious faith, even to the point where any indication of failure gets countered by dogmas about real OOP, and how just this isn’t. One such dogma holds that a program must incarnate the trinity of inheritance, polymorphism and encapsulation to qualify as real OOP.
Scratch is about controlling sprites with blocks. Since user interaction with both is quasi-physical, regarding them as objects isn’t all that far fetched to begin with.
Except, you can do funny things with computer objects that defy the laws of the physical world. Like, having the same object be present at a dozen different locations all at once through variables. Or like cloning stuff. These things aren’t rocket science, they’re plain old magic. Rather useful, too. In fact, if it weren’t for magic why bother with computers at all?
Still, magic is kinda hard getting used to for novices. I suspect that’s the reason why Scratch doesn’t support such preternatural phenomena out the box. first class blocks? Nope. Storing sprites in variables? Not in Scratch. Propagate a costume change to all clones? Negative.
Scratch also is about walls. Sure, they’re “wide”, the threshold is “low” and the ceiling is “high”. But remember, the difference between a palace and a prison cell is merely a matter of perspective, if the design is to keep you inside. Magic this isn’t.