Of course you’re correct in one sense. However, science is an old word and like many others in the English language it has multiple senses. In the context I used it in, it means a systematic body of knowledge. I’m sure you’d agree mathematics meets that criterion. Other examples include ethics and aesthetics.
> Math cannot modify the value of a variable--either global or local. It cannot mutate an element in an array.
Computer scientists do this all the time. You most definitely can model state, side effects, non-determinism, IO, random acts of God etc. using pure math. TLA+, Coq, Isabell/HOL, LEAN etc. are proof assistants that are routinely used to do exactly that.
My interpretation is that he's stating that you can't base fundamental mathematical formalism's on mutation, you have to model them using immutable structures.
You can then model mutation on top of that.
Then in key areas, when you know bringing back in mutation for performance reasons, you can do so with a really nice test case to validate your implementation is correct. IE does the mutable one match the immutable one.
I was disappointed to see that this article did not mention python generators (`yield`) with respect to infinite series. They were introduced in 2001 by PEP 255 - well before this article was written. Perhaps they were excluded because of the implicit statefulness?
Dijkstra and Scholten would beg to differ. Mathematics is the science of describing patterns, and mutable state falls well within its purview.