Abstraction, the beauitful map of the world.

Computers are a fucking insane thing. Right now, just by pressing a key, you are controlling electrons in a extremely precise manner. So precise, and so controlled, that these electrons, can do all kinds of complicated mathematics to compute the result and tell the result back to you, in a way you understand. This is the beauty of abstraction. It has allowed the average person to control elementary particles so they do math for us, and tell it back to us. Isnt that fucking crazy?

Abstraction allows us to not worry about the intricate details of something, but still use it. A straight forward example is a watch. Watches can be very complicated, intricate and impressive forms of engineering and art. Though, at the end of the day, the watch maker and the watch wearer use the watch in the same way, by reading the dial. The interworkings of the watch are abstracted away, and we dont need to worry about the complicated mechanics of the watch. This is a common theme you will come across, and you need to be comfortable bouncing around layers of abstraction in computation. Thankfully for us, this is a benefit.

Abstraction is split up into layers, at the lowest we have the physics of the electrons moving through transistors. At the top we have software interfaces like we see in front of us. I also do like too append the internet and computer networks to that, just for my own mental model. The reason this is significant for us, is it *can* guide where we want to focus our attention. Often, you want to focus what is below the target. Meaning, for example, if we are focused on a software, we might spend a lot of time looking at how that software manages the resources of the computer. While this is a vague definition, I am assuming you know very little, so words like "libraries" "memory management" "business logic" are meaningless. Though if you have a background, you can likely infer what I am talking about.

So now, lets spend some time looking at the layers of abstraction within computation, and how they interact with eachother. We will then spend time looking at the details of these layers, and actually getting our hands dirty with it each step of the way.

The Layers

We are going to actually ignore the lowest layer of abstraction, which is physics. I dont think explaining the make up and behavior of elementary particles is useful since we will primarily dealing with just Electrons. We going to start with....

Devices

The name can be deceiving, since the term "devices" is vague, but we are specifically going to talk about transistors. Basically the tiny 3nm sized switches that when combined together to create logical circuits. Along with this, we will learn about the basics of electronics, and how circuits work.