Brief History of Computer Systems, Software, and Programming

Brief History of Computer Systems, Software, and Programming

The first modern computer came into existence in the 1940s. No single person invented

the computer¡ªthe credit goes to the many inventors who have worked on different

pieces of the computer over the years. Man¡¯s quest to simplify mathematical

computations has led to extensive research, algorithm development, and other

innovations. Laptops, tablets, smartphones, and many other devices are a product of

these innovations. This article will detail the history of these innovations in mathematics,

programming, and software and computer system design.

What Is a Computer?

A computer is an electronic device that stores and processes data. It comprises both

hardware and software. The term hardware refers to the physical aspects of the

computer and comprises the following main components:

1.

2.

3.

4.

central processing unit (CPU);

memory;

storage devices (disks, CDs, and tapes);

input and output devices (monitors, keyboards, mice, and printers).

All these components are connected to each other through the system bus. The figure

below provides a visual overview of the main parts of the computer.

Figure 1: The main components of a computer.

Computer programs are written by programmers, and they guide the computer through

an orderly set of actions to perform some operation. The term software refers to these

programs that instruct hardware to perform specific tasks. The instructions to the



The Saylor Foundation



Page 1 of 9

computer can be given using different programming languages. These languages have

evolved over time.

History of Computing

The earliest device to keep track of calculations was an abacus. It was used around 50

BC and was very popular in Asia. A popular form of abacus is shown below.

Figure 2: An abacus.1

John Napier, a Scottish mathematician, physicist, and astronomer, defined natural

logarithms in 1614 to simplify calculations. The use of logarithms greatly simplified the

complex astronomical, navigational, mathematical, and scientific calculations that were

commonplace at that time. He also invented Napier¡¯s bones, a mathematical tool that

used a set of numbered rods to simplified multiplication.

Figure 3: Napier¡¯s bones.2

1

2

This image is in the public domain. The original can be found here.

This image is licensed under the Creative Commons Attribution-Share Alike 3.0 Unported license. It is attributed to Wikipedia user

La Enciclopedia Libre Universal en Espa?ol. The original can be found here.



The Saylor Foundation



Page 2 of 9

Charles Babbage, a British mathematician and inventor, first proposed the idea of a

programmable computer. While studying complex astronomical calculations that others

had done by hand, he found numerous mistakes, which motivated him to design a

¡°mechanical computer¡± that could do these calculations without errors. Though he

designed such a machine, it was never built during his lifetime.

The need for programming came with the idea of making general purpose hardware that

could be used to carry out a variety of tasks. Ada Lovelace, who was the world¡¯s first

programmer, published a paper in which she demonstrated how Babbage¡¯s analytical

engine could be programmed to perform various computations.

Another device called a punch card was used in the late 1800s to keep track of data

that could be read by machines. Punch cards stored information in digital format, which

was represented at the time by specific series of holes in paper cardstock. Herman

Hollerith applied the idea of representing information as holes in paper cards to speed

up the tabulation process in the 1890 US Census. Hollerith¡¯s work contributed to initial

programming methods, and punch cards were used to communicate with computers

well into the 1970s. We still use the technique of punch cards today in the voting

process, and punch cards were subject to media attention with the ¡°hanging chads¡±

issue during the 2000 US presidential elections, when some ballots were not punched

properly, making votes difficult to count.

Figure 4: A punch card programmed with FORTRAN.3

In the late 1940s, John von Neumann introduced the idea of a computer architecture

based on stored programs. The key idea was to store both the data and the program in

memory. The idea behind storing programs in a memory was based on the construction

of these programs using a small set of generic operations. This became known as von

Neumann Architecture in the field of computer science. It was a major advance in

computer design, because until this point computers were programmed by setting

switches and physically wiring the components. Storing programs in memory completely

changed that. This was also the start of machine language (a sequence of 0s and 1s)

as a means of programming of the computer. A set of sequences of 0s and 1s were

used to indicate the operations and the operands on which these operations would be

performed. An example of a machine language program looks something like this:

3

This image is in the public domain. The original can be found here.



The Saylor Foundation



Page 3 of 9

Figure 5: An example of a machine language program

Each line in the program contains a 16-bit code that represents either a machine

instruction or a single data value. For example, the first few bits may indicate that the

operation to be performed is addition, and the following bits may provide the numbers

that need to be added. Another sequence may have initial bits to indicate that data

needs to be fetched from the memory, and the following bits will provide the address in

the memory from which the data will be fetched.

It was difficult to program using 0s and 1s as different pieces of code looked similar.

Giving sections of these 0s and 1s symbolic names would make the task of

programming easier as the programmer could focus on data and operations in creating

programs. This led to the creation of assembly languages in the 1950s; programmers

used these assembly languages to write software. An assembly language is a low-level

programming language which is close to machine language but provides clarity into

operations of a machine through the use of symbols. An example of a machine

language program looks something like this:

LD R1, NUMBER1

LD R2, NUMBER2

ADD R3, R1, R2

Figure 6: An assembly language program for adding two numbers

The first computer, ENIAC (Electronic Numerical Integrator and Computer), was built by

the United States Army¡¯s Ballistic Research Laboratory in 1946. It was part of research

aimed at providing better ballistic missiles to the U.S. Army during World War II.



The Saylor Foundation



Page 4 of 9

Figure 7: ENIAC, the first computer.4

Dr. Presper Eckert and Dr. John Mauchly, two members of the team that built ENIAC,

started their own company, Universal Automatic Computer, or UNIVAC, to build the first

commercial computer. Their first client was the United States Census Bureau, which

needed a computer to keep track of the growing U.S. population. The computer was

successfully built in 1951 at the cost of about one million dollars (about $9 million in

today¡¯s money).

Machine Language and Programming Languages

Machines understand 0s and 1s. The task of software is to express computation in a

higher-level language and then translate it into a sequence of 0s and 1s that machines

can understand. When you express the computation in a higher-level language, this is

referred to as raising the level of abstraction in programming context. A typical software

application, such as a word processor or an operating system, may include millions of

lines of software code. However, the hardware can only execute low-level instructions

presented to it in the form of the machine language consisting of 0s and 1s. Several

layers of software are needed to convert the high-level application code into the

machine language. As shown in the figure below, a system software layer such as the

operating system controls the hardware; the user controls application programs, which

run on top of the operating system layer.

4

This image is in the public domain. The original can be found here.



The Saylor Foundation



Page 5 of 9

................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download