In this tutorial, we’ll go over some very high-level concepts about how a computer program works. Please keep in mind that we have simplified them in this tutorial. The purpose of this tutorial is to expand your computer vocabulary and introduce you to programming jargon so that you can proceed. You can read more about computer architecture in other books. This tutorial is not meant to be a reference.
The following quote may give you some insight into what programming really is.
To program a computer to add 1 & 1 and get 2, first you have to tell it what “1” is; then you have to tell it what “addition” is; then you have to tell it what “equals” is; then you have to tell it what “2” is. Then you can tell it that 1+1=2 & it will do it perfectly every time, infinitely faster than we can.
A computer program, in general, is a collection of software that runs on the hardware. We’re assuming you’re familiar with hardware and software. Nonetheless, we’ll go over them briefly to refresh your memory.
What is Hardware?
Computer hardware is the physical parts of the computer.
Typically, software directs hardware to carry out any command or instruction. A functional computing system consists of a combination of hardware and software, though there are systems that only use hardware.
What Are The Physical Parts?
- Case
- Central Processing Unit or CPU
- Random Access Memory or RAM
- Monitor
- Mouse
- Keyboard
- Computer Data Storage(HDD,SSD etc)
- Graphics Card
- Sound Card
- Speakers
- Motherboard
You do not need to be an expert on them or understand how they work. It is sufficient to have a basic understanding of them. Hardware is so named because it is difficult or rigid to change. A piece of hardware’s components is rarely interchangeable. However, you can upgrade your hardware. The addition of new or additional hardware to a computer that improves its performance expands its capacity or adds new features is referred to as an upgrade in computer hardware.
To improve performance, a user could, for example, perform a hardware upgrade to replace the hard drive with a faster one or a Solid State Drive (SSD). The user can also add more Random Access Memory (RAM) so that the computer can store and retrieve temporary data more quickly. To fully utilize USB 3.0 devices, the user can add a USB 3.0 expansion card or upgrade the GPU for cleaner, more advanced graphics or more monitors. For older computers to meet requirements, such hardware upgrades may be required.
The following are some of the physical components of a personal computer:
Motherboard
The main component of a Computer is the motherboard. Hence the name. It is the main physical part. It is a board with integrated circuitry (You don't have to know the detail) that connects other parts of the computer including - CPU, RAM, Disk Drives(HDD,SSD,CD,DVD, or any other) as well as any peripherals connected via the ports or expansion slots.
CPU
CPU is the brain of the computer. It performs most of the calculations which enables a computer to function. But we can not directly give program instructions to the CPU ourselves. So from where does a CPU get the program instructions and data required to execute the instructions? The answer is from the RAM. First the CPU loads program instructions from RAM, then interprets them as well as process them, and after processing send back results so that the relevant components can carry out the instructions.
RAM
RAM is another important component that is directly integrated into the motherboard. It is referred to as the system's main memory. Access times are much faster because data is accessed randomly rather than sequentially, as it is on a CD or hard drive. RAM stores both our program code and data. The CPU actively accesses the RAM for data. When we open a web browser to surf the internet, for example, the instructions to run the web browser and the necessary data are first stored in RAM. They are actively accessed, interpreted, and processed by the CPU. The data and instructions are kept in RAM until the Web Browser is closed.
Input Devices
Input devices enable users to enter data into the system or control its operation. Most personal computers include a mouse and keyboard. Touchpads are more commonly found on laptop computers. Webcams, microphones, joysticks, and image scanners are examples of other input devices.
Output Devices
Human senses are central to the design of output devices. Monitors, for example, display text that can be read, whereas speakers produce sound that can be heard. Printers and Braille embossers are examples of such devices.
In short, the CPU does all the data processing and calculations, Input devices are used to give input data when required, RAM stores data and instructions which are actively accessed and processed by CPU, CPU may present us with some output using the output devices.
What is Software?
Software is the set of instructions that can be used and run by the hardware. Hardware is typically directed by the software to execute any command or instructions. A usable computing system is a combination of both hardware and software.
RAM is the main memory. It plays a vital role to run any and every program in our system. So we are going to discuss RAM a little bit more so you can have a clear understanding of how RAM works.
How Does the RAM Work?
The Operating System(as it is software), applications programs, and data that are currently being used are kept in RAM so that the computer’s processor can quickly reach them. Random Access memory is volatile, which means that data is retained in RAM as long as the Computer is on. When we turn off the computer that data is lost. When we reboot the computer the OS and other files are reloaded into RAM, usually from an HDD or SSD. RAM can not store permanently as it is volatile.
Any storage location, commonly known as memory address of a RAM can be accessed directly. Hence this memory component is called Random Access Memory or RAM.
If it does not make any sense to you right now do not worry. We have not yet told you why we need to address memory location in the RAM. We will explain this now. To further illustrate the concept of RAM, consider RAM as a set of boxes.
There are many such boxes in RAM that determine its SIZE.
Typically there are billions of such boxes in a RAM.
A box can only hold a Boolean value. A Boolean or bool is a data type in computer science that has two possible values: true or false. It takes its name from the English mathematician and logician George Boole. The algebraic and logical systems that he devised are widely used in all modern digital computers. We all talk about data type later in the All About Data Types tutorial. But we have told you over and over again that computers only understand numeric format or numbers. So how does it interpret true or false. It does so by considering true as 1 and false as 0. So any box in the RAM can store either a 1 or 0 as its value. A box can only store one value at a time. It can not store both the 0 and 1 at the same time in a specific box. If we try to do so the previous stored value will be substituted by the new value. The following figure demonstrates this.
How Each RAM Cell is Addressed?
Each box has a unique address associated with it. This address can be found by counting across the columns and down the rows.
A set of ram boxes is called an array, and each box is known as a cell.
To find a specific cell in the RAM, the RAM controller does the following:
Sends the column and row address down a thin electrical line etched into the chip. Each row and column in a RAM array has its own address line. Any data that’s read flows back on a separate line.
REMEMBER each box is called a cell or a memory cell. It is the fundamental building block of Computer memory. The memory cell is an electronic circuit that stores one BIT of binary information and it must be set to store a logic 1 (high voltage level) and reset to store a logic 0 (low voltage level). Until a set/reset operation is performed the memory cell’s value is maintained/stored. The value in the memory cell can be accessed by reading it.
What is A “BIT”?
Now let us discuss the bit. It is the most basic unit of information in computing and digital communications. The word bit is a combination of “bi” from “binary” and “t” from “digit”. What bit actually represents is a logical state with one of two possible values – in our case either 0 or 1. It can not represent both at the same time.
What is A “BYTE”?
A contiguous group of binary digits is commonly called a bit string, a bit vector, or a single-dimensional (or multi-dimensional) bit array.
A group of eight binary digits is called one byte, but historically the size of the byte is not strictly defined. Frequently, half, full, double, and quadruple words consist of a number of bytes which is a low power of two. A string of four binary digits is a nibble.
What is the Reason for Grouping Contiguous Binary Digits?
Let us first realize why we should take contiguous binary digits. Why does the need arise in the very first place? We know that computers only understand numbers and that too of one format only, called binary format. This format consists of only two digits. 0 and 1. We derive different numbers using the combinations of 0 and 1. In a binary number system, data is stored in bits. A bit can only hold one of the two values – either a 0 or a 1 at a time. A bit is the basic unit of information. We rarely work with information one bit at a time, as they are very small and do not give us significant insight. While considering alone bits can only give us information like – true or false, yes or no. But when we group some specific number of bits together as a single unit, the information they can hold significantly increases.
Let us go back to our analogy of a set of boxes.
There are 16 boxes in this set of boxes. Each box can contain a Boolean value: either a 0 or a 1.
When we get the value from the box, only one box at a time, the box can not provide us with much information as the capability of storage of a box is very limited. But if we group the boxes – like the first four boxes consisting of a group, boxes 5 through 8 consisting of another group, and so on. Now using this idea of a group combination of boxes we enhance the capability of storing significantly. In real-life applications, bits are assembled into a group of 8 to form a byte. In other words, a byte consists of 8 contiguous bits. Though the standard number of bits in a byte is 8 digits long, that number may vary from system to system depending on the hardware. In java, A byte is 8 bits long. The memory address is addressed using byte values.
Let us consider our box analogy again. We now take 8 boxes to make a group. In the first box, we can only store one of the two numbers/information either a 0 or 1 true/false. Now let us consider the first two boxes. Each box can store or hold two possible values, so the total number of positive values that two boxes can store is 4 possible values. This is also true for any group of two boxes. Now take us to a contiguous group of eight boxes or bits.
There exists a mathematical formula for how many possible values a set of bits can store. The formula is
2^n
where n is the number of bits in a set of bits(in our box analogy it is the number of boxes in a group of boxes). A byte has 8 bits or 8 binary digits. So it can store 2^8=256 different values. They are called byte values as each of the combinations of 8 bits represents a single byte. A byte can store a numerical value between 0 and 255 while considering only positive numbers. If we also consider negative numbers they can hold a numerical value between -127 and +127 (inclusive). This numerical value is calculated using binary number to decimal number conversion. This is not discussed here as it is out of the scope of this tutorial. We address memory cells using byte values.
Historically Bytes are used to represent characters. The reason behind this is simple – Bytes contain enough information to store a single character.
When we consider 2-Byte memory or in simple words an assembly of a group of 16 contiguous bits instead of 8 contiguous bits, we call this arrangement – a Short. A Short can store 2^16 different values ranging from -32768 to +32767 when we are considering negative values.
When we consider 4-Byte memory or in simple words an assembly of a group of 32 contiguous bits instead of 8 contiguous bits, we call this arrangement – an Integer. An integer can store 2^32 different values ranging from -2,147,483,648 to 2,147,483,647 when we are considering negative values.
When we consider 8-Byte memory or in simple words an assembly of a group of 64 contiguous bits instead of 8 contiguous bits, we call this arrangement – a Long. A Long can store 2^64 different values ranging from -9,223,372,036,854,775,808(-2^63) to 9,223,372,036,854,775,807(2^63 -1) when we are considering negative values.
Keep this in mind a byte is 8 times a bit, a short is double a byte, an integer is double a short, and a long is double a integer.
- A kilobyte or KB consists of 1024 times a byte
- A megabyte or MB consists of 1024 times a kilobyte
- A gigabyte or GB consists of 1024 times a megabyte
- A terabyte or TB consists of 1024 times a gigabyte