There are lots of hobbyists on the forum that don't care about that,
you are dealing with profesional here where they care you dont, where they dont you care. keep arguing like this is like pulling string indefinetely, pointless.
Well, you're dealing with a professional here too, so I guess we're even. Let me tell you what the problem is, and why nonsense like this even comes up in the first place.
When you go to school and learn electronics, how do they teach it? Well, of course they start with high level concepts such as gates, and then they talk about building digital computers with the gates. Then, just before you graduate college, they introduce the concept of resistors, capacitors, transistors, etc....and they explain a little about voltage and current, and voila', you're an engineer.
Right?
No no no....completely wrong, it sounds crazy and it is crazy. You start by learning about basic things, like resistors and caps, and you slowly build up into more complicated things. By the time you're ready to graduate, maybe you can't design a computer, for example, but you can at least see how you might get there from the basic building blocks.
But when we teach software, what do we do? We start with a so-called beginner language. Take you're pick....BASIC, Fortran, Pascal, Java, or even C and C++...whatever, they've all been used and more. Bah. The beginner language should be some sort of assembly language. Maybe even a simplified assembly running on a simulated processor. This is where you learn all of the nuts and bolts so when you then get to a real language, it all makes sense because you can visualize what's happening.
As a programmer I have quite some insight to add to this. I first learned to program in C (and in general) it was rather frustrating. This was likely because I didn't know much about semantics, program structure, and what that weird
for loop does (don't worry, I know what it does now
). Eventually I found these wonderful things called textbooks and I was happily on my way practicing this new language.
Some Universities around me teach software the way you say, through starting at the bottom of the system and working their way up.
This book (there is a third edition, but no free PDF floating around) studies computers starting with some basic technical knowledge, however it starts from C, it then discusses the various levels involving a C program (this is only the preface) and then after that it's bottom up, for a while they do program in assembly to demonstrate a few concepts (see the table of contents, pdf page
. I've read part of this book, and while my C programming skills haven't improved I am much more effective at debugging and fixing code, thinking about code at lower levels, and optimizing code for speed.
https://doc.lagout.org/programmation/Computer%20Systems%20-%20A%20Programmers%20Perspective.pdfHowever not all schools have this approach, in my school the mind set is "JAVA IS KING!!! Who cares how the VM works" and this leads to a lot of rather interesting code.
I digress, learning to program in assembly is like learning carpentry (sorry for another analogy, I can tell we have had too many of them) without power tools and by only using hand tools. Sure you eventually could get to the same results, but there will be an extremely steep learning curve, and lots of error along the way. There are a lot of carpenters out there that believe in this. However they are experienced - they already know how hand tools work.
My point is while hand tools are fun and great, we need power tools to get the bulk of the work done.