Cambridge Encyclopedia :: Cambridge Encyclopedia Vol. 17
 

computer - History of computing, Stored program architecture, How computers work, Further topics

The modern electronic digital computer is the result of a long series of developments, which started some 5000 years ago with the abacus. The first mechanical adding device was developed in 1642 by the French scientist-philosopher, Pascal. His ‘arithmetic machine’, was followed by the ‘stepped reckoner’ invented by Leibnitz in 1671, which was capable of also doing multiplication, division, and the evaluation of square roots by a series of stepped additions, not unlike the methods used in modern digital computers. In 1835, Charles Babbage formulated his concept of an ‘analytical machine’ which combined arithmetic processes with decisions based on the results of the computations. This was really the forerunner of the modern digital computer, in that it combined the principles of sequential control, branching, looping, and storage units.

Portions of the summary below have been contributed by Wikipedia.

In the later 19th-c, George Boole developed the symbolic binary logic which led to Boolean algebra and the binary switching methodology used in modern computers. Herman Hollerith (1860–1929), a US statistician, developed punched card techniques, mainly to aid with the US census at the beginning of the 20th-c; this advanced the concept of automatic processing, but major developments awaited the availability of suitable electronic devices. J Presper Eckert (1919–95) and John W Mauchly (1907–80) produced the first all-electronic digital computer, ENIAC (Electronic Numerical Integrator and Calculator), at the University of Pennsylvania in 1946, which was 1000 times faster than the mechanical computers. Their development of ENIAC led to one of the first commercial computers, UNIVAC I, in the early 1950s, which was able to handle both numerical and alphabetical information. Very significant contributions were made around this time by Johann von Neumann, who converted the ENIAC principles to give the EDVAC computer (Electronic Discrete Variable Automatic Computer) which could modify its own programs in much the same way as suggested by Babbage.

The first stored program digital computer to run an actual program was built at Manchester University, UK, and first performed successfully in 1948. This computer was later developed into the Ferranti Mark I computer, widely sold. The first digital computer (EDSAC) to be able to be offered as a service to users was developed at Cambridge University, UK, and ran in the spring of 1949. The EDSAC design was used as the basis of the first business computer system, the Lyons Electronic Office. Advances followed rapidly from the 1950s, and were further accelerated from the mid-1960s by the successful development of miniaturization techniques in the electronics industry. The first microprocessor, which might be regarded as a computer on a chip, appeared in 1971, and nowadays the power of even the most modest personal computer can equal or outstrip the early electronic computers of the 1940s. The key elements in computing today are miniaturization and communications. Hand-held computers, with input via a stylus, can be linked to central systems through a mobile telephone.

A computer is a machine for manipulating data according to a list of instructions.

A list of computer instructions designed to perform some task is known as a program. The Church – Turing thesis is a mathematical statement of this versatility: Any computer with a certain minimum capability is, in principle, capable of performing the same tasks that any other computer can perform. Society has come to recognize personal computers and their portable equivalent, the laptop computer, as icons of the information age; However, the most common form of computer in use today is by far the embedded computer.

History of computing

The question of which was the earliest computer is a difficult one.

Originally, the term "computer" referred to a person who performed numerical calculations (a human computer), often with the aid of a mechanical calculating device.

However, none of those devices fit the modern definition of a computer because they could not be programmed.

In 1837, Charles Babbage was the first to conceptualize and design a fully programmable mechanical computer that he called "The Analytical Engine".

During the first half of the 20th century, many scientific computing needs were met by increasingly sophisticated analog computers, which used a direct mechanical or electrical model of the problem as a basis for computation.

Defining characteristics of five first operative digital computers
Computer Nation Shown working Binary Electronic Programmable Turing
complete
Zuse Z3 Germany May 1941 Yes No By punched film stock Yes (1998)
Atanasoff-Berry Computer USA Summer 1941 Yes Yes No No
Colossus computer UK 1943 Yes Yes Partially, by rewiring No
Harvard Mark I/IBM ASCC USA 1944 No No By punched paper tape No
ENIAC USA 1944 No Yes Partially, by rewiring Yes
1948 No Yes By Function Table ROM Yes

A succession of steadily more powerful and flexible computing devices were constructed in the 1930s and 1940s, gradually adding the key features that are seen in modern computers. Notable achievements include:

The Atanasoff-Berry Computer (1941) which used vacuum tube based computation, binary numbers, and regenerative capacitor memory.

Nearly all modern computers implement some form of the stored program architecture, making it the single trait by which the word "computer" is now defined. While the technologies used in computers have changed dramatically since the first electronic, general-purpose computers of the 1940s, most still use the von Neumann architecture. Around the same time, computers became widely accessible for personal use by individuals in the form of home computers and the now ubiquitous personal computer. In conjunction with the widespread growth of the Internet since the 1990s, personal computers are becoming as common as the television and the telephone and almost all modern electronic devices contain a computer of some kind.

Stored program architecture

The defining feature of modern computers which distinguishes them from all other machines is that they can be programmed. That is to say that a list of instructions (the program) can be given to the computer and it will store them and carry them out at some time in the future.

In most cases, computer instructions are simple: add one number to another, move some data from one location to another, send a message to some external device, etc. However, there are usually specialized instructions to tell the computer to jump ahead or backwards to some other place in the program and to carry on executing from there. This is called the flow of control within the program and it is what allows the computer to perform tasks repeatedly without human intervention. stop running

Once told to run this program, the computer will perform the repetitive addition task without further human intervention.

Large computer programs may take teams of computer programmers years to write and the probability of the entire program having been written completely in the manner intended is unlikely.

In most computers, individual instructions are stored as machine code with each instruction being given a unique number (its operation code or opcode for short). The simplest computers are able to perform any of a handful of different instructions, the more complex computers have several hundred to choose from — each with a unique numerical code. Since the computer's memory is able to store numbers, it can also store the instruction codes. This leads to the important fact that entire programs (which are just lists of instructions) can be represented as lists of numbers and can themselves be manipulated inside the computer just as if they were numeric data. The fundamental concept of storing programs in the computer's memory alongside the data they operate on is the crux of the von Neumann, or stored program, architecture. In some cases, a computer might store some or all of its program in memory that is kept separate from the data it operates on.

University of Phoenix

While it is possible to write computer programs as long lists of numbers (machine language) and this technique was used with many early computers, it is extremely tedious to do so in practice, especially for complicated programs. Converting programs written in assembly language into something the computer can actually understand (machine language) is usually done by a computer program called an assembler. Machine languages and the assembly languages that represent them (collectively termed low-level programming languages) tend to be unique to a particular type of computer. This means that an ARM architecture computer (such as may be found in a PDA or a hand-held videogame) cannot understand the machine language of an Intel Pentium or the AMD Athlon 64 computer that might be in a PC. Therefore, most complicated programs are written in more abstract high-level programming languages that are able to express the needs of the computer programmer more conveniently (and thereby help reduce programmer error). High level languages are usually "compiled" into machine language (or sometimes into assembly language and then into machine language) using another computer program called a compiler. Since high level languages are more abstract than assembly language, it is possible to use different compilers to translate the same high level language program into the machine language of many different types of computer. This is part of the means by which software like video games may be made available for different computer architectures such as personal computers and various video game consoles.

Example

Suppose a computer is being employed to drive a traffic light. A simple stored program might say:

Turn off all of the lights Turn on the red light, wait for sixty seconds Turn off the red light, turn on the green light, wait for sixty seconds Turn off the green light, turn on the amber light, wait for two seconds Turn off the amber light Jump to instruction number (2)

With this set of instructions, the computer would cycle the light continually through red, green, amber and back to red again until told to stop running the program.

However, suppose there is a simple on/off switch connected to the computer that is intended be used to make the light flash red while some maintenance operation is being performed. The program might then instruct the computer to:

Turn off all of the lights Turn on the red light, wait for sixty seconds Turn off the red light, turn on the green light, wait for sixty seconds Turn off the green light, turn on the amber light, wait for two seconds Turn off the amber light If the maintenance switch is NOT turned on then jump to instruction number (2) Turn on the red light, wait for one second Turn off the red light, wait for one second Jump to instruction number (6)

In this manner, the computer is either running the instructions from number (2) to (6) over and over or it's running the instructions from (6) down to (9) over and over, depending on the position of the switch.

How computers work

A general purpose computer has four main sections: the arithmetic and logic unit (ALU), the control unit, the memory, and the input and output devices (collectively termed I/O).

Control unit

The control unit (often called a control system or central controller) directs the various components of a computer. Instructions that modify the program counter are often known as "jumps" and allow for loops (instructions that are repeated by the computer) and often conditional instruction execution (both examples of control flow).

It is noticeable that the sequence of operations that the control unit goes through to process an instruction is in itself like a short computer program - and indeed, in some more complex CPU designs, there is another yet smaller computer called a microsequencer that runs a microcode program that causes all of these events to happen.

Memory

A computer's memory may be viewed as a list of cells into which numbers may be placed or read. The computer may be instructed to "put the number 123 into the cell numbered 1357" or to "add the number that is in cell 1357 to the number that is in cell 2468 and put the answer into cell 1595".

In almost all modern computers, each memory cell is set up to store binary numbers in groups of eight bits (called a byte). Since data is constantly being worked on, reducing the need to access main memory (which is often slow compared to the ALU and control units) greatly increases the computer's speed.

Computer main memory comes in two principal varieties: random access memory or RAM and read-only memory or ROM. In a PC, the ROM contains a specialized program called the BIOS that orchestrates loading the computer's operating system from the hard disk drive into RAM whenever the computer is turned on or reset.

Input/output (I/O)

I/O is the means by which a computer receives information from the outside world and sends results back. Modern desktop computers contain many smaller computers that assist the main CPU in performing I/O.

Multitasking

While a computer may be viewed as running one gigantic program stored in its main memory, in some systems it is necessary to give the appearance of running several programs simultaneously.

Before the era of cheap computers, the principle use for multitasking was to allow many people to share the same computer.

Seemingly, multitasking would cause a computer that is switching between several programs to run more slowly - in direct proportion to the number of programs it is running.

Networking and the Internet

Computers have been used to coordinate information in multiple locations since the 1950s, with the US military's SAGE system the first large-scale example of such a system, which led to a number of special-purpose commercial systems like Sabre.

In the 1970s, computer engineers at research institutions throughout the US began to link their computers together using telecommunications technology. Computer operating systems and applications were modified to include the ability to define and access the resources of other computers on the network, such as peripheral devices, stored information, and the like, as extensions of the resources of an individual computer.

Further topics

Hardware

The term hardware covers all of those parts of a computer that are tangible objects.

History of computing hardware
First Generation (Mechanical/Electromechanical) Calculators Antikythera mechanism, Difference Engine, Norden bombsight
Programmable Devices Jacquard loom, Analytical Engine, Digi-Comp I, Digi-Comp II, Geniac, Harvard Mark I
Second Generation (Vacuum Tubes) Calculators Atanasoff-Berry Computer
Programmable Devices ENIAC, EDSAC, EDVAC, UNIVAC I
Third Generation (Discrete transistors and SSI, MSI, LSI Integrated circuits) Mainframes System/360, BUNCH
Minicomputer PDP-8, PDP-11, System/32, System/36
Fourth Generation (VLSI integrated circuits) Minicomputer VAX, AS/400
4-bit microcomputer Intel 4004, Intel 4040
8-bit microcomputer Intel 8008, Intel 8080, Motorola 6800, 6502, Zilog Z80
16-bit microcomputer 8088, 6800, WDC 65816/65802
32-bit microcomputer 80386, Pentium, 68000, ARM architecture
64-bit microcomputer x86-64, PowerPC, MIPS, SPARC
Embedded computer 8048, 8051
Personal computer Desktop computer, Home computer, Laptop computer, Personal digital assistant (PDA), Portable computer, Tablet computer, Wearable computer
Server class computer
Theoretical/experimental Quantum computer
Chemical computer
DNA computing
Optical computer
Other Hardware Topics
Peripheral device (Input/output) Input Mouse, Keyboard, Joystick, Image scanner
Output Monitor, Printer
Both Floppy disk drive, Hard disk, Optical disc drive, Teleprinter
Computer busses Short range RS-232, SCSI, PCI, USB
Long range (Computer networking) Ethernet, ATM, FDDI

Software

Software refers to parts of the computer that have no material form;

Computer software
Operating system Unix/BSD UNIX System V, AIX, HP-UX, Solaris (SunOS), FreeBSD, NetBSD, IRIX
GNU/Linux List of Linux distributions, Comparison of Linux distributions
Microsoft Windows Windows 9x, Windows NT, Windows CE
DOS DOS/360, QDOS, PC-DOS, MS-DOS, FreeDOS
Mac OS Mac OS classic, Mac OS X
Embedded and real-time List of embedded operating systems
Experimental Amoeba, Oberon/Bluebottle, Plan 9 from Bell Labs
Library Multimedia DirectX, OpenGL, OpenAL
Programming library C standard library
Data Protocol TCP/IP, Kermit, FTP, HTTP, SMTP
File format HTML, XML, JPEG, MPEG, PNG
User interface Graphical user interface (WIMP) Microsoft Windows, GNOME, QNX Photon, CDE, GEM
Text user interface Command line interface, shells
Other
Application Office suite Word processing, Desktop publishing, Presentation program, Database management system, Scheduling & Time management, Spreadsheet, Accounting software
Internet Access Browser, E-mail client, Web server, Mail transfer agent, Instant messaging
Design and manufacturing Computer-aided design, Computer-aided manufacturing, Plant management, Robotic manufacturing, Supply chain management
Graphics Raster graphics editor, Vector graphics editor, 3D modeler, Animation editor, 3D computer graphics, Video editing, Image processing
Audio Digital audio editor, Audio playback, Mixing, Audio synthesis, Computer music
Software Engineering Compiler, Assembler, Interpreter, Debugger, Text Editor, Integrated development environment, Performance analysis, Revision control, Software configuration management
Educational Edutainment, Educational game, Serious game, Flight simulator
Games Strategy, Arcade, Puzzle, Simulation, First-person shooter, Platform, Massively multiplayer, Interactive fiction
Misc Artificial intelligence, Antivirus software, Malware scanner, Installer/Package management systems, File manager

Programming languages

Programming languages provide various ways of specifying programs for computers to run.

Programming Languages
Lists of programming languages Timeline of programming languages, Categorical list of programming languages, Generational list of programming languages, Alphabetical list of programming languages, List of esoteric programming languages, Non-English-based programming languages
Commonly used Assembly languages ARM, MIPS, x86
Commonly used High level languages BASIC, C, C++, C#, COBOL, Fortran, Java, Lisp, Pascal
Commonly used Scripting languages JavaScript, Python, Ruby, PHP, Perl

Professions and organizations

As the use of computers has spread throughout society, there are an increasing number of careers involving computers.

Computer-related professions
Hardware-related Electrical engineering, Electronics engineering, Computer engineering
Software-related Human-computer interaction, Information technology, Software engineering, Systems analyst, Web design

The need for computers to work well together and to be able to exchange information has spawned the need for many standards organizations, clubs and societies of both a formal and informal nature.

Organizations
Standards groups ANSI, IEC, IEEE, IETF, ISO, W3C
Professional Societies ACM, SIGGRAPH, IET
Enthusiasts Clubs ....
Free/Open source software groups Free Software Foundation, Mozilla Foundation, Apache Software Foundation
computer art [next] [back] computational linguistics

User Comments Add a comment…