This is when I was eight or so, and it’s the first aha! Moment that I remember.
For the first time, I realized that = meant both sides were equal. Of course, I already knew that and paid lip service to it, but I had never really understood what it meant. In my mind, the LHS had had to be a computation of some sort, and the RHS had to be the result. I now knew that = meant that the two sides, whatever they may be, were the same thing.
It’s very difficult to transmit this insight and have the receiver realize that this is a nontrivial insight. In my experience, only those who have had analogous experiences and those who teach math really get what I’m talking about.
I had an analogous experience when learning programming for the first time related to the return type of a function—that if you have a function like “int myFunction()” it in some sense “is” an integer, and so the function call can be substituted anywhere that you could use a literal integer (like 3).
Of course it’s not quite that simple in most programming languages since impure functions can have side effects that have nothing to do with the return value, but it was still a helpful realization.
AIUI, what SolveIt describes is more like a reduction relation (‘leads to’) than imperative assignment. And it’s not that surprising, because you have to know about evaluating expression before you can use equality in any non-trivial way.
I don’t want to speak for SolveIt, but “result of computation” presupposes a different outcome for a counterfactually different computation input. Which is a very important difference between equality and what I call “imperative assignment.”
But I agree that kids natively perceiving [equations as a symbol game] vs [equations as causal systems] are different hypotheses, and we ought to be able to test which is correct.
This is when I was eight or so, and it’s the first aha! Moment that I remember. For the first time, I realized that = meant both sides were equal. Of course, I already knew that and paid lip service to it, but I had never really understood what it meant. In my mind, the LHS had had to be a computation of some sort, and the RHS had to be the result. I now knew that = meant that the two sides, whatever they may be, were the same thing.
It’s very difficult to transmit this insight and have the receiver realize that this is a nontrivial insight. In my experience, only those who have had analogous experiences and those who teach math really get what I’m talking about.
I had an analogous experience when learning programming for the first time related to the return type of a function—that if you have a function like “int myFunction()” it in some sense “is” an integer, and so the function call can be substituted anywhere that you could use a literal integer (like 3).
Of course it’s not quite that simple in most programming languages since impure functions can have side effects that have nothing to do with the return value, but it was still a helpful realization.
It is interesting you understood imperative assignment at eight, before you understood equality. This meshes well with a hypothesis I heard.
AIUI, what SolveIt describes is more like a reduction relation (‘leads to’) than imperative assignment. And it’s not that surprising, because you have to know about evaluating expression before you can use equality in any non-trivial way.
I don’t want to speak for SolveIt, but “result of computation” presupposes a different outcome for a counterfactually different computation input. Which is a very important difference between equality and what I call “imperative assignment.”
But I agree that kids natively perceiving [equations as a symbol game] vs [equations as causal systems] are different hypotheses, and we ought to be able to test which is correct.