I mean, tap the breaks a little bit, here. “Fully” is doing a lot of lifting.
I will concede most people don’t understand the concept of transistors, much less the electrical engineering that turns a series of transistors into a CPU. And I’ll spot you that - for any given computer - it would take multiple extended papers to explain every piece of functionality.
But - broadly speaking - if you a computer engineer, you understand how a computer is engineered. If you’re working in IT, you have enough of a functional knowledge that you can tell what each general component does.
And if you’re a full stack developer (rather than someone who just does business logic on the backend), you should have a generalized understanding of client versus server versus database and how these pieces fit together. You should also probably have some grasp of the network stack, if for no other reason than you occasionally need to troubleshoot it.
I think there are very few if any people who understand computers from the transistor all the way to front-end JavaScript frameworks. At least not deeply and not without major gaps.
I mean, plenty of people use higher end coding languages to customize the tools they use to make advanced chipsets.
And, I’m sorry, but JavaScript isn’t that hard to understand - intentionally so. It’s one of the first languages you can learn in grade school.
I doubt anyone could go end-to-end on hardware manufacturing. But that’s more an issue of parts miniaturization. People build working computer kernels in Minecraft using torches and switches.
It’s the scaling and the speed of it all that you can’t really understanding. Also all the hackneyed unoptimized solutions that hold it all together that we’re totally dependent on to this day.
The very basic principles of 1 and 0 and using them to make logic gates is easy enough to understand. Its somewhere between doing that and getting hundreds of millions of them in a space smaller than your fingernail to all work at exactly the right way to send a specific series of them to space and back in a way that cant be interpreted by anyone but the intended recipient and then translate that information to a picture of someones dick that the confusion starts up.
I think that people just can’t make the software --> hardware jump. Like they understand what machine code is, and what CPU registers are, but can’t understand how a CPU with baked in hardware instructions (i.e. a seemingly fully deterministic piece of hardware) can drive transistors to high or low voltages in a random way.
The key is to see all software as hardware, and to envision the CPU as many many light bulb switches, with some wired into each other, creating flip/flopping latches.
Once you get the idea of a flipflop, you can maybe then start to understand how all you really want from the switches is to output a switch configuration that encodes a value in some representation. The switches are all initialized in some state, but then drive a known flipflop path towards a desired value, and this happens millions of time a second, often in parallel with isolated switches, or with switches that are virtually segmented from each other, or switches that can chaotically interact with each other
To anyone feeling like this, nobody understands fully how computers work. You find your niche and you do your bit.
I don’t think there’s anyone alive who understands it all.
I mean, tap the breaks a little bit, here. “Fully” is doing a lot of lifting.
I will concede most people don’t understand the concept of transistors, much less the electrical engineering that turns a series of transistors into a CPU. And I’ll spot you that - for any given computer - it would take multiple extended papers to explain every piece of functionality.
But - broadly speaking - if you a computer engineer, you understand how a computer is engineered. If you’re working in IT, you have enough of a functional knowledge that you can tell what each general component does.
And if you’re a full stack developer (rather than someone who just does business logic on the backend), you should have a generalized understanding of client versus server versus database and how these pieces fit together. You should also probably have some grasp of the network stack, if for no other reason than you occasionally need to troubleshoot it.
I think there are very few if any people who understand computers from the transistor all the way to front-end JavaScript frameworks. At least not deeply and not without major gaps.
I mean, plenty of people use higher end coding languages to customize the tools they use to make advanced chipsets.
And, I’m sorry, but JavaScript isn’t that hard to understand - intentionally so. It’s one of the first languages you can learn in grade school.
I doubt anyone could go end-to-end on hardware manufacturing. But that’s more an issue of parts miniaturization. People build working computer kernels in Minecraft using torches and switches.
I mean the basic principles are very simple.
It’s the scaling and the speed of it all that you can’t really understanding. Also all the hackneyed unoptimized solutions that hold it all together that we’re totally dependent on to this day.
The very basic principles of 1 and 0 and using them to make logic gates is easy enough to understand. Its somewhere between doing that and getting hundreds of millions of them in a space smaller than your fingernail to all work at exactly the right way to send a specific series of them to space and back in a way that cant be interpreted by anyone but the intended recipient and then translate that information to a picture of someones dick that the confusion starts up.
it’s all monads bro.
god bless Leibniz.
I think that people just can’t make the software --> hardware jump. Like they understand what machine code is, and what CPU registers are, but can’t understand how a CPU with baked in hardware instructions (i.e. a seemingly fully deterministic piece of hardware) can drive transistors to high or low voltages in a random way.
The key is to see all software as hardware, and to envision the CPU as many many light bulb switches, with some wired into each other, creating flip/flopping latches.
Once you get the idea of a flipflop, you can maybe then start to understand how all you really want from the switches is to output a switch configuration that encodes a value in some representation. The switches are all initialized in some state, but then drive a known flipflop path towards a desired value, and this happens millions of time a second, often in parallel with isolated switches, or with switches that are virtually segmented from each other, or switches that can chaotically interact with each other