4 ms·
We have to model our problems so that the machine can understand, and since computers are modeled after mathematical abstractions of computation, we build tools
by proc0 10y ago
We have to model our problems so that the machine can understand, and since computers are modeled after mathematical abstractions of computation, we build tools to help us translate. First Assembly, then C, then C++, then Java, etc. We build up the abstraction layers so that we can better express ourselves in our instructions, which is at its core math.
It's like knowing a foreign language, and also knowing the cultural contexts of certain phrases, or the historical context of certain words. As you speak to someone who is a native speaker, you better communicate with them by knowing more about how they will process certain words and phrases. Analogous to this, it is always good to learn the mathematical underpinnings of how a computer computes, because this lets you use its languages more effectively, therefore better communication and translation of instructions from thoughts to bits.
Ideally, we can see that the easiest way to instruct a computer would be to simply talk to it. Maybe in the future, AI will be sophisticated enough for both speech recognition, and writing code comprehensively (as oppose to programmatically). But since that's not happening for at least a few decades (singularity now!), a programmer's ability to write good code is directly proportional to their knowledge about how the computer does what it does with the syntax you give it.