95
I Started Programming When I Was 7. I'm 50 Now and the Thing I Loved Has Changed
(www.jamesdrandall.com)
Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!
Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.
Hope you enjoy the instance!
Rules
Follow the wormhole through a path of communities !webdev@programming.dev
I don't think it's a binary switch between "understanding" and "not understanding". I have the basic gist of how semiconductors and logic gates work, I know a little about how CPUs and assembly work, and I can work with assembly if I have to, but those aren't my areas of expertise. I know enough about floating point arithmetic that I can identify floating point errors as floating point errors, but I don't claim to have anything close to the fluency in those systems that I do for higher-level languages. The ability to specialize makes it possible to make fantastic machines like the global Internet even though no one person on earth understands all the sub-components to the degree that a specialist in a particular sub-component does. I'm not saying that there aren't some computing systems that are fully comprehended by a single person, but the ability to specialize increases the scope of what is collectively possible.
OK, but that doesn't really answer my question, and I'm getting the sense you don't know how deeply some engineers understand how the hardware works. Plenty of embedded programmers have EE degrees, and can write VHDL just as well (or just as badly) as they can write C and ASM.
A "EE" degree won't get you into poking the right things into memory using BASIC. How about your "EE" programmers try that understanding of hardware?
To answer your question: no, I don't think that. I know there are some areas of computing where having a deep understanding of the entire system is critical, like embedded systems. I mean, that necessity of deep understanding doesn't have to apply to every domain of computing, and creating abstractions is a useful way of dividing the work so we can make more complicated systems than one person could if they needed to understand every part.