For me, there’s no better explanation possible than the description of software behavior in Specifying Systems by Leslie Lamport:
> Formally, we define a behavior to be a sequence of states, where a state is an assignment of values to variables. We specify a system by specifying a set of possible behaviors—the ones representing a correct execution of the system.
Programming is creating an executable description of a set of possible sequences of states. Nothing more.
"the experience of a beautiful sinset is just the firing of a million of neurons in a specific pattern, nothing more."
There are emergent properties of programming, the craft, that you need to master if you want to navigate the next levels of complexity. Just reasoning about sequences of state transition is going to be I'll suited for many occasions, even if technically that's all you need to model everything.
I didn't say sunset, I said the process of experiencing a sunset. Building an AI that can reach that level of complexity is certainly an engineering problem and under the hood it can be modeled by state transition somewhere deep in the mechanism, but you won't get there and implement a human-level intelligence if you deliberately avoid higher level abstractions.
I am reminded of a quote by Mark Twain: "Humor can be dissected, as a frog, but the thing dies in the process, and the innards are of interest only to the purely scientific mind."
The Lamport quote does the same thing, but to software. The thing died in the process.
Einstein said “Everything should be made as simple as possible, but no simpler.” Ultimately, we find out that simplicity, whether in process or explanation, is sometimes actually the hardest thing to achieve. Through many struggles in doing things wrong or inefficiently we find that simplicity eventually(if we are lucky)!
> Formally, we define a behavior to be a sequence of states, where a state is an assignment of values to variables. We specify a system by specifying a set of possible behaviors—the ones representing a correct execution of the system.
Programming is creating an executable description of a set of possible sequences of states. Nothing more.
https://lamport.azurewebsites.net/tla/book-02-08-08.pdf