Zero operand just means that the top of the stack is the implied operand for most instructions. It means that a register decoding phase is not needed in the execution of instructions because the operand is the stack.
Instead of having to decode which registers are gated for input and which register is gated for output, and set up the gates to the ALU as some of the steps in executing an instruction the path to operands is hard wired because it is the top of the stack. So there are no operands to decode.
It is not very clever to try to convince people that it means that there are no arguements at all and thefore all it can do is NOP.
It certainly does not mean that it cannot do useful things. After all some languages like Forth are also zero operand because they use the top of a parameter stack. Parameters are still needed for branching and for literals but they are not operand fields for registers that require a decoding phase hence the name zero operand.
Some people will declare that programming a register machine is just easiter than programming a stack machine. Their argument is that the compiler they use makes it easy or that they can stay at a higher level of abstraction.
Some people will declare that programming a stack machine is just easier than programming a register machine. Their argument is that their compiler and language is simpler and smaller and doesn't need all that complicated register stuff. They may say that to program a register machine people need complex smart compilers to hide the real complexity under the hood and they prefer something simpler.
And all that is mostly a matter of whether they are thinking of software in a style used on register machines or a style used on stack machines or virtual stack machines. If you use C then you like C hardware and C software and may think stack languages or stack hardware is harder for you to deal with.
If you use Forth then you may think stack software and stack hardware is a lot simpler and easier to deal with than bigger more complex tools and platforms. People choose Forth for embedded work to get smaller, cheaper, and lower power solutions to problems than those available with the bigger more expensive, more complex hardware and software.
Which is easier depends entirely on what you know and the problem at hand.
Yes of course. The idea of 'zero operand' is that the arguments, operands, are on the stacks. It's just silly and stupid to argue that it means that there are no arguments and thus nothing useful.
And it may be easy to port software far more compact and space efficient than register machine native code especially when the design needs inlining and loop unrolling to ger around pipeline or cache problems.
The idea is to also reduce power consumption and resources required by the design. The idea is to be able to execute more compact stack based code than register based code to further reduce cost and power consumption by reducing memory use. The idea is to make the CPU easier to program and more efficient with simple software rather than demanding the biggest and most complex development tools.
That's just insulting and dumb. Zero operand does not mean NOP only. ;-) That's a new Forth-hater sound-bite, Forth and stacks are only good for doing NOPs. Only the most ignorant will believe it. ;-)
It did not have to be told!
Best Wishes