It recently occurred to me that I (and I think most people) learned computer programming starting with something like Visual Basic. I began to wonder if we had started at the lower level first if it would be easier now.
Do you think it is any value as a programmer to understand things like how a CPU works, the basic instructions, and things like that? I mean after all aren’t we really talking to it in the end?
If we started at the CPU level and taught from there up we might find that we can understand how to manipulate it at a high level easier.
Programming languages are virtual machines. C, C#, Fortran, Basic, etc are CPUs in and of itself, albeit portable. They say that if you are programming on Fortran, you are programming on some sort of Fortran machine. If you are programming on C, you are programming on some sort of C machine. There’s even a language implemented on hardware-level, LISP.
There’s even a joke on C. The C Programming Language : A language which combines all the elegance and power of assembly language with all the readability and maintainability of assembly language.
You can reach every nooks and crannies of pointers, manual memory manipulation, instructions, pointers to function, etc with languages like C, or C# with unsafe option.
You are not missing something even if you don’t know the CPU in depth.
But if you really want to squeeze performance out of your program, there’s a real value in knowing what goes under the hood, learn the CPU/assembly language if the program merits it.