Transcript for:
Understanding Binary and Programming Languages

We've previously talked about how computers run a bunch of basic instructions really fast. These instructions look like this, a bunch of zeros and ones. We call these zeros and ones binary. Thing is, the computer doesn't literally look at binary. We just use zeros and ones as shorthand to represent high and low voltage inside of the machine. We do this because it's easier to work with zeros and ones instead of thinking about voltages directly. When we think in terms of concepts instead of what's in reality, we call this abstract thinking. We call the concepts we use: An Abstraction. Abstractions are just lies. Stories we tell ourselves because they're easier to understand then thinking about what's actually happening all of the time. When you drive a car, you want the wheels to turn left and right. You could imagine a device that lets you set the wheel direction from the center. The further from the center it goes, the more the wheels turn. Or you could have a device where you point a laser on the road and the car sets the wheels towards the laser. And, of course, you could just have a wheel that you turn in the direction you'd like the wheels to go. All of these are different abstractions, possibly dumb ones, for setting the wheel direction in the same way the zeros and ones are an abstraction for low and high voltages. The physical circuits of the computer react to these voltages, not zeros and ones. Still working with zeros and ones directly would be very challenging and time consuming. To make programing computers easier Computer scientists have created another abstraction. The programing language. there are many programing languages out there, but most of them contain English words alongside some symbols. Reading and writing this is a lot easier than trying to decipher binary. We call the text of the language code. The code is then used to build a program, a bunch of binary that the computer runs in this series will be learning to program in a language called C. C programing language is widely used. If you use an iPhone, Android, Windows, Mac or Linux, you're using some software which has been in part written in C. This pervasiveness make C a great language to learn, since once you learn it, you have the flexibility to build all sorts of things. when talking about languages, we tend to think about them in terms of higher level languages and lower level languages. Higher and lower here refers to the amount of abstraction. Higher level languages are typically easier to use because their whole goal is about enabling humans to express their intent effectively. But as you move to lower level languages, the languages get more and more constrained to how the computer actually works, which on the plus side gives you a lot more control because the language is getting out of the way. But with more control, it means that you need to know more about how the computer really works. C is a pretty low level language. It doesn't have very many frills And you do need to learn a bit about how computers work under the hood to use it. But this is great for three reasons. First, it gives you a lot of control. This is why things like triple-A games, high performance computing, simulation and Real-Time Systems use lower level languages like C. because you can tell the computer exactly what to do. The second is, since you're forced to learn how computers truly work, it lets you dig up and down these levels pretty easily. You’ll start to understand why higher level languages do what they do and why they're designed that way. And if you do need to dig down and start dealing with hardware development or OS level stuff, you have a really good foundation to work from. And third C is forever. Other dead and dying languages have come and gone, but C has stayed. I think a lot of it is probably how un opinionated the language is. They never change C so C is immune to any fads and programing language design. C is definitely not the easiest language to learn, but if you master it, it makes learning all other languages easy. If you did the experiments from last week's video to help Gary find Lorenzo, you were programing in a low level language because the instructions were very basic and were closer to how a computer actually works under the hood. To get a sense of how programing languages look for this video's experiments. I give you some Gary programs and ask you to pick the matching program in a different language. You don't need to fully understand the languages you're looking at. The goal here is to try to decipher how the low level instructions match up to the higher level languages. In the next video, we'll be working on getting you the tools to get you started with C.