I don't have an opinion this, but I have some related questions.
1) Where is MAX_SIGOPS validated? In isStandard(), right?
I think it should be there. I'm ok with having that function for sanity, but I think the door should be open to stop using it in the future, to leave it out of the protocol (although maybe each implementation runs its own version of the function, depending on its performance variables). Not sure how each proposal affects that part I just read something about it somewhere in these discussions.
2) Probably there's a good reason but...Why a scripting language is needed in the first place?
Why don't just a set of validations that must be all true, operators with parameters and references to other elements in the script?
Standard Transaction to Bitcoin address
scriptPubKey: OP_HASH_EQUAL(), OP_CHECKSIG(scriptSig[0])
scriptSig: ,
Multi-signature
scriptPubKey: OP_HASH_EQUAL() OR OP_HASH_EQUAL() OR OP_HASH_EQUAL(),
scriptPubKey[0], scriptSig[0] != scriptSig[1], OP_CHECKSIG(scriptSig[0]), OP_CHECKSIG(scriptSig[1])
scriptSig: , , ,
another valid scriptSig
Wouldn't something like this be more secure and achieve the same things?
Of course, this would not be feasible for compatibility issues, I just want to know the reasons behind the stack language.
EDIT
Sorry, I just found this thread:
https://bitcointalksearch.org/topic/bip-16-big-picture-61248