I’m turning into a bit of a relic, I went to VTC in 2011 – which means my electronics professors were a lot of old school people who had experienced a complete shift in the electronics and computing industry in their lifetimes and often in their working careers. I was very blessed to have so many good mentors in my young adult years.
I strongly believe that programmers, and especially computer scientists, should have the basic understanding of how electrical circuits work – with a strong focus on digital logic circuits.
In my life, the electrical circuits came first. I got to build decision making circuits with logic gates. I got to see how operational amplifiers can be used to build circuits that make complex decisions based on one measurement, say temperature, to control another device like a fan. These logical concepts are so important for any programmer to grasp firmly and clearly.
Some people who dive directly into code struggle with the concepts of flipping boolean values, but for electrical engineers, that’s just adding another gate into the circuit (a NOT gate if you are wondering).
That’s where assembly language comes into the game. For me, that was the first piece of code I ever read. I think the first command they explained to us was a NOP – which mean null operation – or do nothing for a single clock cycle. The entirety of assembly language fits so nicely into how digital circuitry works. When you have a grasp on how gates respond to signals, suddenly the painful way assembly goes about pushing electrons around starts to make sense. You can’t do everything all at once. You have to be very careful with every step. Storing and retrieving data is not a trivial thing when you are talking about single clock cycles and address pointers.
I’m not going to re-write the wheel and explain assembly language to the world, there are far better resources readily available than what I can write in a quick ten minute post. I do however urge you to consider learning the basics of assembly. You will appreciate what high level languages are doing for you behind the scenes.