The Computer Tutor
Here you can get a basic overview of the different levels of interaction that exist within your computer's operating system, as well as the large amount of time and effort that has gone into making the computer the simple, intuitive machine that it is today.
This is probably very similar to the screen you see when you first turn your computer on, right? Though each operating system is different, the desktop portion of your computer screen will always have several important parts: a background where you can place a custom image, a section of the screen that can hold icons of the file system and programs that you access the most, and a menu that stores links to many, if not all of the programs that you have installed on your computer.
When you run a program on your computer, it probably also looks very similar to this. It is enclosed in its own window, separate from the desktop. It probably has several menus, both text-based and icon-based, and you interact with the program by typing on your keyboard or clicking on the icons or other parts of the program with your mouse cursor. From this perspective, the computer seems very easy to understand and use. It's visual, intuitive, and standardized. But underneath it all, everything begins to get complicated...
This is just a simple example of the type of code that exists below the visual level within your operating system, as well as every program you run. The program seen here is a very basic computer program that multiples two integers together. In order to compute a simple multiplication, the computer needs to read all these instructions, as well as the values entered for each variable that is given to it by you, the user. And this is only the most accessible level at which programs for the computer are written.
The code you are seeing here is assembly language, and it is the lowest level programming language that exists on the computer. All the programs written with complex higher-level programming languages like Java and C++ must be run through compilers that translate the code they are written in into assembly language. The CPU then converts the assembly language code into binary, or strings of 1s and 0s that are read by the CPU as electrical on (1) or off (0) switches.
This is binary code. A 32-bit processor reads these strings of 1s and 0s in segments that are 32 numbers long, while a 64-bit processor reads them in strings of 64 numbers long. Just by reading different combinations of these strings of number, however, a computer is capable of more tasks than you may expect, and it is able to complete those tasks at speeds that are almost unfathomably fast. So, the next time your computer is running a little slow, just remember all the work it has to do just to multiply two numbers together!
Now that you have some idea of how the software and the operating system on you computer really works, you can: