> And macro systems are more principled than MOPs in that macros are purely static devices: you (re)define the language first, and you use it later.
I would just define the classes/objects/functions first and use them later. One can also develop static MOPs.
Nobody forces me to modify a running system, though it usually is a huge time saver - that's why for example most web browsers provides an implementation of Javascript - a dynamic object-oriented language.
> Nobody forces me to modify a running system, though it usually is a huge time saver
I won't dispute this fact, but it's not a principled way to work. The principled thing is to have two separate phases, one for designing abstractions, another for using them. You can't prove anything definitively about things that are eternally open for modification.
I would just define the classes/objects/functions first and use them later. One can also develop static MOPs.
Nobody forces me to modify a running system, though it usually is a huge time saver - that's why for example most web browsers provides an implementation of Javascript - a dynamic object-oriented language.