I very much agree with articles that can understand =. In programming languages, = is a philosophy. Do not tell others easily that you understand it.
John Backus said the following:"The value assignment statement splits the program into two worlds. The first world is the world on the right of the value assignment statement. This is an ordered expression world, which has many useful algebraic features ........ The most useful computation occurs here. The second world is the world of statements. It is a disordered world where no useful mathematical features can be found. Structured Programming brings some order to this chaotic world at a certain level, but its original loops, subfunctions, the branch process technology has never hit the essence of the Von noriman language-the control flow mode of one command at a time "."
The ancient evil giant MI has his opinion. Now I also want to give my opinion.
In my opinion, the assignment he said is better than definition. Because if it is a name on the left and a value on the right, all he says is wrong. Therefore, it must be a name on the left, a calculation process on the right, and finally a value. In this way, we can naturally understand the meaning of the ordered world on the right. On the left is the disordered world, that is, our real world. Naturally, the name we give comes from our conception of the real world. The concept is basically a psychological problem, half a philosophical problem, and there is no mathematical structure in it.
The key point here is that the language nature of the Von norm language, linear, one instruction, and sequential execution. I have not studied much about this, and I do not want to do more research. Because I am more concerned about how to achieve parallelism, and I don't want to make time criticize that the existing system cannot be parallel.
However, I still think carefully about all the aspects in this perspective and draw a conclusion that the model in this order is basically based on the determination of time parameters. Specifically, the time is determined, the time direction is determined, the time start and end points are determined, and the time arrangement method is determined. Undoubtedly, this is our real world.
Of course, in terms of computing, the left and right are actually integrated, that is, numbers and operators themselves. Therefore, the traditional method is to use the structure to express the real world. Of course, the consequence of this is that sometimes it looks ugly and bloated. For example, this is what we often say about object-oriented. In the lectures, the ancient evil giant microphone also talked about related issues.
Here I think about another question, namely, purely functional programming. Undoubtedly, the program's form in the memory definitely determines the way the program runs. Naturally, I still get used to it. Even if I am forced to be bound by the operating system, I will put the data in the data segment and the code in the code segment. Obviously, in order to write strong code, I will also use the address reference based on the value reference and have a strong column desire. The problem arises here. Because we pursue purity, we will inevitably destroy the data segment order, even if we will eventually output the function to the register rather than the memory, in fact, the memory order is damaged. So we invented stack. And because we have a strong desire to use address reference, we have the ability to further disrupt order outside the stack. So we can only use ordered commands and live in the real world with fear.
We should live in the computing world. That is to say, we invented computers to let us do computing, rather than let us reproduce a real world. There is no doubt that the real world needs computing, and then some important conclusions are drawn. However, this does not mean that the computing world needs to be constrained by the real world to give the computing results of the real world. Obviously, in the computing world, functions are more pure and easy to use than objects.