This is full- from of computer is common operating machine particularly used
for trade,education and research.The computer is only short of saying this word
together.......
"Computer technology" and "Computer system"
redirect here. For the company, see Computer Technology Limited. For other
uses, see Computer (disambiguation) and Computer system (disambiguation).
A computer is a general purpose device that can be
programmed to carry out a set of arithmetic or logical operations. Since a
sequence of operations can be readily changed, the computer can solve more than
one kind of problem.
Conventionally, a computer consists of at least one
processing element, typically a central processing unit (CPU), and some form of
memory. The processing element carries out arithmetic and logic operations, and
a sequencing and control unit can change the order of operations in response to
stored information. Peripheral devices allow information to be retrieved from
an external source, and the result of operations saved and retrieved.
In World War II, mechanical analog computers were used for
specialized military applications. During this time the first electronic
digital computers were developed. Originally they were the size of a large
room, consuming as much power as several hundred modern personal computers
(PCs).[1]
Modern computers based on integrated circuits are millions
to billions of times more capable than the early machines, and occupy a
fraction of the space.[2] Simple computers are small enough to fit into mobile
devices, and mobile computers can be powered by smallbatteries. Personal
computers in their various forms are icons of the Information Age and are what
most people think of as “computers.” However, the embedded computers found in
many devices from MP3 players to fighter aircraft and from toys to industrial
robots are the most numerous.
Contents [hide]
1 Etymology
2 History
2.1 First general-purpose computing device
2.2 Analog computers
2.3 The modern computer
2.3.1 Electromechanical computers
2.3.2 Electronic programmable computer
2.3.3 Stored program computer
2.4 Transistor computers
2.5 The integrated circuit
3 Programs
3.1 Stored program architecture
3.2 Bugs
3.3 Machine code
3.4 Programming language
3.4.1 Low-level languages
3.4.2 Higher-level languages
3.5 Program design
4 Components
4.1 Control unit
4.2 Arithmetic logic unit (ALU)
4.3 Memory
4.4 Input/output (I/O)
4.5 Multitasking
4.6 Multiprocessing
4.7 Networking and the Internet
4.8 Computer architecture paradigms
5 Misconceptions
5.1 Required technology
6 Further topics
6.1 Artificial intelligence
6.2 Hardware
6.2.1 History of computing hardware
6.2.2 Other hardware topics
6.3 Software
6.4 Languages
6.5 Professions and organizations
7 Degradation
8 See also
9 Notes
10 References
11 External links
Etymology
The first use of the word “computer” was recorded in 1613 in
a book called “The yong mans gleanings” by English writer Richard Braithwait I
haue read the truest computer of Times, and the best Arithmetician that euer
breathed, and he reduceth thy dayes into a short number. It referred to a
person who carried out calculations, or computations, and the word continued
with the same meaning until the middle of the 20th century. From the end of the
19th century the word began to take on its more familiar meaning, a machine
that carries out computations.[3]
History
Main article: History of computing hardware
Rudimentary calculating devices first appeared in antiquity
and mechanical calculating aids were invented in the 17th century. The first
recorded use of the word "computer" is also from the 17th century,
applied to human computers, people who performed calculations, often as
employment. The first computer devices were conceived of in the 19th century,
and only emerged in their modern form in the 1940s.
First general-purpose computing device
A portion of Babbage's Difference engine.
Charles Babbage, an English mechanical engineer and
polymath, originated the concept of a programmable computer. Considered the
"father of the computer",[4] he conceptualized and invented the first
mechanical computer in the early 19th century. After working on his
revolutionary difference engine, designed to aid in navigational calculations,
in 1833 he realized that a much more general design, an Analytical Engine, was
possible. The input of programs and data was to be provided to the machine via
punched cards, a method being used at the time to direct mechanical looms such
as the Jacquard loom. For output, the machine would have a printer, a curve
plotter and a bell. The machine would also be able to punch numbers onto cards
to be read in later. The Engine incorporated an arithmetic logic unit, control
flow in the form of conditional branching and loops, and integrated memory,
making it the first design for a general-purpose computer that could be
described in modern terms as Turing-complete.[5][6]
The machine was about a century ahead of its time. All the
parts for his machine had to be made by hand - this was a major problem for a
device with thousands of parts. Eventually, the project was dissolved with the
decision of the British Government to cease funding. Babbage's failure to
complete the analytical engine can be chiefly attributed to difficulties not
only of politics and financing, but also to his desire to develop an
increasingly sophisticated computer and to move ahead faster than anyone else
could follow. Nevertheless his son, Henry Babbage, completed a simplified
version of the analytical engine's computing unit (themill) in 1888. He gave a
successful demonstration of its use in computing tables in 1906.
Analog computers
Sir William Thomson's third tide-predicting machine design,
1879-81
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. However, these were not programmable and generally lacked the
versatility and accuracy of modern digital computers.[7]
The first modern analog computer was a tide-predicting
machine, invented by Sir William Thomson in 1872. The differential analyser, a
mechanical analog computer designed to solve differential equations by
integration using wheel-and-disc mechanisms, was conceptualized in 1876 by
James Thomson, the brother of the more famous Lord Kelvin.[8]
The art of mechanical analog computing reached its zenith
with the differential analyzer, built by H. L. Hazen and Vannevar Bush at MIT
starting in 1927. This built on the mechanical integrators of James Thomson and
the torque amplifiers invented by H. W. Nieman. A dozen of these devices were
built before their obsolescence became obvious.
The modern computer
Alan Turing was the first to conceptualize the modern
computer, a device that became known as the Universal Turing machine.
The principle of the modern computer was first described by
computer scientist Alan Turing, who set out the idea in his seminal 1936
paper,[9] On Computable Numbers. Turing reformulated Kurt Gödel's 1931 results
on the limits of proof and computation, replacing Gödel's universal
arithmetic-based formal language with the formal and simple hypothetical
devices that became known as Turing machines. He proved that some such machine
would be capable of performing any conceivable mathematical computation if it
were representable as an algorithm. He went on to prove that there was no
solution to the Entscheidungsproblem by first showing that the halting problem
for Turing machines isundecidable: in general, it is not possible to decide
algorithmically whether a given Turing machine will ever halt.
He also introduced the notion of a 'Universal Machine' (now
known as a Universal Turing machine), with the idea that such a machine could
perform the tasks of any other machine, or in other words, it is provably
capable of computing anything that is computable by executing a program stored
on tape, allowing the machine to be programmable. Von Neumann acknowledged that
the central concept of the modern computer was due to this paper.[10] Turing
machines are to this day a central object of study intheory of computation.
Except for the limitations imposed by their finite memory stores, modern
computers are said to be Turing-complete, which is to say, they have algorithm
execution capability equivalent to a universal Turing machine.
Electromechanical computers
Replica of Zuse's Z3, the first fully automatic, digital
(electromechanical) computer.
Early digital computers were electromechanical - electric
switches drove mechanical relays to perform the calculation. These devices had
a low operating speed and were eventually superseded by much faster
all-electric computers, originally using vacuum tubes. The Z2, created by
German engineer Konrad Zuse in 1939, was one of the earliest examples of an
electromechanical relay computer.[11]
In 1941, Zuse followed his earlier machine up with the Z3,
the world's first workingelectromechanical programmable, fully automatic
digital computer.[12][13] The Z3 was built with 2000 relays, implementing a 22
bit word length that operated at a clock frequency of about 5–10 Hz.[14]
Program code and data were stored on punched film. It was quite similar to
modern machines in some respects, pioneering numerous advances such as floating
point numbers. Replacement of the hard-to-implement decimal system (used in
Charles Babbage's earlier design) by the simpler binary system meant that
Zuse's machines were easier to build and potentially more reliable, given the
technologies available at that time.[15] The Z3 was probably a complete Turing
machine.
Electronic programmable computer
Purely electronic circuit elements soon replaced their
mechanical and electromechanical equivalents, at the same time that digital
calculation replaced analog. The engineer Tommy Flowers, working at the Post
Office Research Station in Dollis Hill in the 1930s, began to explore the
possible use of electronics for the telephone exchange. Experimental equipment
that he built in 1934 went into operation 5 years later, converting a portion
of the telephone exchange network into an electronic data processing system,
using thousands of vacuum tubes.[7] In the US, John Vincent Atanasoff and
Clifford E. Berry of Iowa State University developed and tested theAtanasoff–Berry
Computer (ABC) in 1942,[16] the first "automatic electronic digital
computer".[17] This design was also all-electronic and used about 300
vacuum tubes, with capacitors fixed in a mechanically rotating drum for
memory.[18]
Colossus was the first electronic digitalprogrammable
computing device, and was used to break German ciphers during World War II.
During World War II, the British at Bletchley Park achieved
a number of successes at breaking encrypted German military communications. The
German encryption machine,Enigma, was first attacked with the help of the
electro-mechanical bombes. To crack the more sophisticated German Lorenz SZ
40/42 machine, used for high-level Army communications, Max Newman and his
colleagues commissioned Flowers to build the Colossus.[18] He spent eleven
months from early February 1943 designing and building the first Colossus.[19]
After a functional test in December 1943, Colossus was shipped to Bletchley
Park, where it was delivered on 18 January 1944[20] and attacked its first
message on 5 February.[18]
Colossus was the world's first electronic digital
programmable computer.[7] It used a large number of valves (vacuum tubes). It
had paper-tape input and was capable of being configured to perform a variety
of boolean logical operations on its data, but it was not Turing-complete. Nine
Mk II Colossi were built (The Mk I was converted to a Mk II making ten machines
in total). Colossus Mark I contained 1500 thermionic valves (tubes), but Mark
II with 2400 valves, was both 5 times faster and simpler to operate than Mark
1, greatly speeding the decoding process.[21][22]
ENIAC was the first Turing-complete device,and performed
ballistics trajectory calculations for the United States Army.
The US-built ENIAC[23] (Electronic Numerical Integrator and
Computer) was the first electronic programmable computer built in the US.
Although the ENIAC was similar to the Colossus it was much faster and more
flexible. It was unambiguously a Turing-complete device and could compute any
problem that would fit into its memory. Like the Colossus, a
"program" on the ENIAC was defined by the states of its patch cables
and switches, a far cry from the stored program electronic machines that came
later. Once a program was written, it had to be mechanically set into the
machine with manual resetting of plugs and switches.
It combined the high speed of electronics with the ability
to be programmed for many complex problems. It could add or subtract 5000 times
a second, a thousand times faster than any other machine. It also had modules
to multiply, divide, and square root. High speed memory was limited to 20 words
(about 80 bytes). Built under the direction of John Mauchlyand J. Presper
Eckert at the University of Pennsylvania, ENIAC's development and construction
lasted from 1943 to full operation at the end of 1945. The machine was huge,
weighing 30 tons, using 200 kilowatts of electric power and contained over
18,000 vacuum tubes, 1,500 relays, and hundreds of thousands of resistors,
capacitors, and inductors.[24]
Stored program computer
Three tall racks containing electronic circuit boards
A section of the Manchester Small-Scale Experimental
Machine, the first stored-program computer.
Early computing machines had fixed programs. Changing its
function required the re-wiring and re-structuring of the machine.[18] With the
proposal of the stored-program computer this changed. A stored-program computer
includes by design an instruction set and can store in memory a set of
instructions (a program) that details thecomputation. The theoretical basis for
the stored-program computer was laid by Alan Turing in his 1936 paper. In 1945
Turing joined the National Physical Laboratory and began work on developing an
electronic stored-program digital computer. His 1945 report ‘Proposed
Electronic Calculator’ was the first specification for such a device.John von
Neumann at the University of Pennsylvania, also circulated his First Draft of a
Report on the EDVAC in 1945.[7]
Ferranti Mark 1, c. 1951.
The Manchester Small-Scale Experimental Machine, nicknamed
Baby, was the world's firststored-program computer. It was built at theVictoria
University of Manchester by Frederic C. Williams, Tom Kilburn and Geoff
Tootill, and ran its first program on 21 June 1948.[25] It was designed as a
testbed for the Williams tube the firstrandom-access digital storage
device.[26] Although the computer was considered "small and
primitive" by the standards of its time, it was the first working machine
to contain all of the elements essential to a modern electronic computer.[27]
As soon as the SSEM had demonstrated the feasibility of its design, a project
was initiated at the university to develop it into a more usable computer, the
Manchester Mark 1.
The Mark 1 in turn quickly became the prototype for the
Ferranti Mark 1, the world's first commercially available general-purpose
computer.[28] Built by Ferranti, it was delivered to theUniversity of
Manchester in February 1951. At least seven of these later machines were
delivered between 1953 and 1957, one of them to Shell labs in Amsterdam.[29] In
October 1947, the directors of British catering company J. Lyons & Company
decided to take an active role in promoting the commercial development of
computers. The LEO I computer became operational in April 1951 [30] and ran the
world's first regular routine office computer job.
Transistor computers
A bipolar junction transistor
The bipolar transistor was invented in 1947. From 1955
onwards transistors replaced vacuum tubes in computer designs, giving rise to
the "second generation" of computers. Compared to vacuum tubes,
transistors have many advantages: they are smaller, and require less power than
vacuum tubes, so give off less heat. Silicon junction transistors were much
more reliable than vacuum tubes and had longer, indefinite, service life.
Transistorized computers could contain tens of thousands of binary logic
circuits in a relatively compact space.
At the University of Manchester, a team under the leadership
of Tom Kilburn designed and built a machine using the newly developed
transistors instead of valves.[31] Their firsttransistorised computer and the
first in the world, was operational by 1953, and a second version was completed
there in April 1955. However, the machine did make use of valves to generate
its 125 kHz clock waveforms and in the circuitry to read and write on its
magneticdrum memory, so it was not the first completely transistorized
computer. That distinction goes to the Harwell CADET of 1955,[32] built by the
electronics division of the Atomic Energy Research Establishment at
Harwell.[33][34]
The integrated circuit
The next great advance in computing power came with the
advent of the integrated circuit. The idea of the integrated circuit was first
conceived by a radar scientist working for the Royal Radar Establishment of the
Ministry of Defence, Geoffrey W.A. Dummer. Dummer presented the first public
description of an integrated circuit at the Symposium on Progress in Quality
Electronic Components inWashington, D.C. on 7 May 1952.[35]
The first practical ICs were invented by Jack Kilby at Texas
Instruments and Robert Noyce at Fairchild Semiconductor.[36] Kilby recorded his
initial ideas concerning the integrated circuit in July 1958, successfully
demonstrating the first working integrated example on 12 September 1958.[37] In
his patent application of 6 February 1959, Kilby described his new device as “a
body of semiconductor material ... wherein all the components of the electronic
circuit are completely integrated.”[38][39] Noyce also came up with his own
idea of an integrated circuit half a year later than Kilby.[40] His chip solved
many practical problems that Kilby's had not. Produced at Fairchild
Semiconductor, it was made of silicon, whereas Kilby's chip was made of
germanium.
This new development heralded an explosion in the commercial
and personal use of computers and led to the invention of themicroprocessor.
While the subject of exactly which device was the first microprocessor is
contentious, partly due to lack of agreement on the exact definition of the
term "microprocessor", it is largely undisputed that the first single-chip
microprocessor was the Intel 4004,[41] designed and realized by Ted Hoff,
Federico Faggin, and Stanley Mazor at Intel.[42]
Programs
The defining feature of modern computers which distinguishes
them from all other machines is that they can be programmed. That is to say
that some type of instructions (the program) can be given to the computer, and
it will process them. Modern computers based on the von Neumann architecture
often have machine code in the form of an imperative programming language.
In practical terms, a computer program may be just a few
instructions or extend to many millions of instructions, as do the programs
forword processors and web browsers for example. A typical modern computer can
execute billions of instructions per second (gigaflops) and rarely makes a
mistake over many years of operation. Large computer programs consisting of
several million instructions may take teams of programmers years to write, and
due to the complexity of the task almost certainly contain errors.
Stored program architecture
Main articles: Computer program and Computer programming
Replica of the Small-Scale Experimental Machine (SSEM), the world's
first stored-program computer, at the Museum of Science and Industry in
Manchester, England
This section applies to most common RAM machine-based
computers.
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. These instructions are read from the computer's
memory and are generally carried out (executed) in the order they were given.
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. These are called “jump” instructions (or branches).
Furthermore, jump instructions may be made to happen conditionally so that
different sequences of instructions may be used depending on the result of some
previous calculation or some external event. Many computers directly support
subroutines by providing a type of jump that “remembers” the location it jumped
from and another instruction to return to the instruction following that jump
instruction.
Program execution might be likened to reading a book. While
a person will normally read each word and line in sequence, they may at times
jump back to an earlier place in the text or skip sections that are not of
interest. Similarly, a computer may sometimes go back and repeat the
instructions in some section of the program over and over again until some
internal condition is met. This is called the flow of control within the
program and it is what allows the computer to perform tasks repeatedly without
human intervention.
Comparatively, a person using a pocket calculator can
perform a basic arithmetic operation such as adding two numbers with just a few
button presses. But to add together all of the numbers from 1 to 1,000 would
take thousands of button presses and a lot of time, with a near certainty of
making a mistake. On the other hand, a computer may be programmed to do this
with just a few simple instructions. For example:
mov No. 0, sum ; set sum to 0
mov No. 1,
num ; set num to 1
loop: add num, sum
; add num to sum
add No. 1,
num ; add 1 to num
cmp num,
#1000 ; compare num to 1000
ble loop ; if num <= 1000, go back to 'loop'
halt ; end of program. stop running
Once told to run this program, the computer will perform the
repetitive addition task without further human intervention. It will almost
never make a mistake and a modern PC can complete the task in about a millionth
of a second.[43]
Bugs
Main article: Software bug
The actual first computer bug, a moth found trapped on a
relay of the Harvard Mark II computer
Errors in computer programs are called “bugs.” They may be
benign and not affect the usefulness of the program, or have only subtle
effects. But in some cases, they may cause the program or the entire system to
“hang,” becoming unresponsive to input such as mouseclicks or keystrokes, to
completely fail, or to crash. Otherwise benign bugs may sometimes be harnessed
for malicious intent by an unscrupulous user writing an exploit, code designed
to take advantage of a bug and disrupt a computer's proper execution. Bugs are
usually not the fault of the computer. Since computers merely execute the
instructions they are given, bugs are nearly always the result of programmer
error or an oversight made in the program's design.[44]
Admiral Grace Hopper, an American computer scientist and
developer of the first compiler, is credited for having first used the term
“bugs” in computing after a dead moth was found shorting a relay in the Harvard
Mark II computer in September 1947.[45]
Machine code
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 command to add two numbers together would have
one opcode; the command to multiply them would have a different opcode, and so
on. 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 these instructions) can be
represented as lists of numbers and can themselves be manipulated inside the
computer in the same way as 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. This is called the Harvard architecture after the
Harvard Mark I computer. Modern von Neumann computers display some traits of
the Harvard architecture in their designs, such as in CPU caches.
While it is possible to write computer programs as long
lists of numbers (machine language) and while this technique was used with many
early computers,[46] it is extremely tedious and potentially error-prone to do
so in practice, especially for complicated programs. Instead, each basic
instruction can be given a short name that is indicative of its function and
easy to remember – a mnemonic such as ADD, SUB, MULT or JUMP. These mnemonics
are collectively known as a computer's assembly language. 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.
A 1970s punched card containing one line from a FORTRAN
program. The card reads: “Z(1) = Y + W(1)” and is labeled “PROJ039” for
identification purposes.
Programming language
Main article: Programming language
Programming languages provide various ways of specifying
programs for computers to run. Unlike natural languages, programming languages
are designed to permit no ambiguity and to be concise. They are purely written
languages and are often difficult to read aloud. They are generally either
translated into machine code by a compiler or an assembler before being run, or
translated directly at run time by an interpreter. Sometimes programs are
executed by a hybrid method of the two techniques.
Low-level languages
Main article: Low-level programming language
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. For instance, 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.[47]
Higher-level languages
Main article: High-level programming language
Though considerably easier than in machine language, writing
long programs in assembly language is often difficult and is also error prone.
Therefore, most practical programs are written in more abstract high-level
programming languages that are able to express the needs of the 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.[48] High level languages are less related to the workings of the
target computer than assembly language, and more related to the language and
structure of the problem(s) to be solved by the final program. It is therefore
often 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.
Program design
Question book-new.svg
This section does not cite any references or sources. Please
help improve this section byadding citations to reliable sources. Unsourced
material may be challenged and removed.(July 2012)
Program design of small programs is relatively simple and
involves the analysis of the problem, collection of inputs, using the
programming constructs within languages, devising or using established
procedures and algorithms, providing data for output devices and solutions to
the problem as applicable. As problems become larger and more complex, features
such as subprograms, modules, formal documentation, and new paradigms such as
object-oriented programming are encountered. Large programs involving thousands
of line of code and more require formal software methodologies. The task of
developing large software systems presents a significant intellectual
challenge. Producing software with an acceptably high reliability within a predictable
schedule and budget has historically been difficult; the academic and
professional discipline of software engineering concentrates specifically on
this challenge.
Components
Main articles: Central processing unit and Microprocessor
File:Computer Components.webm
Video demonstrating the standard components of a
"slimline" computer
A general purpose computer has four main components: the
arithmetic logic unit (ALU), thecontrol unit, the memory, and the input and
output devices (collectively termed I/O). These parts are interconnected by
buses, often made of groups of wires.
Inside each of these parts are thousands to trillions of
small electrical circuits which can be turned off or on by means of an
electronic switch. Each circuit represents a bit (binary digit) of information
so that when the circuit is on it represents a “1”, and when off it represents
a “0” (in positive logic representation). The circuits are arranged in logic
gates so that one or more of the circuits may control the state of one or more
of the other circuits.
The control unit, ALU, registers, and basic I/O (and often
other hardware closely linked with these) are collectively known as a central
processing unit (CPU). Early CPUs were composed of many separate components but
since the mid-1970s CPUs have typically been constructed on a single integrated
circuit called a microprocessor.
Control unit
Main articles: CPU design and Control unit
Diagram showing how a particular MIPS architecture
instruction would be decoded by the control system
The control unit (often called a control system or central
controller) manages the computer's various components; it reads and interprets
(decodes) the program instructions, transforming them into a series of control
signals which activate other parts of the computer.[49] Control systems in
advanced computers may change the order of some instructions so as to improve
performance.
A key component common to all CPUs is the program counter, a
special memory cell (aregister) that keeps track of which location in memory
the next instruction is to be read from.[50]
The control system's function is as follows—note that this
is a simplified description, and some of these steps may be performed
concurrently or in a different order depending on the type of CPU:
Read the code for the next instruction from the cell
indicated by the program counter.
Decode the numerical code for the instruction into a set of
commands or signals for each of the other systems.
Increment the program counter so it points to the next
instruction.
Read whatever data the instruction requires from cells in
memory (or perhaps from an input device). The location of this required data is
typically stored within the instruction code.
Provide the necessary data to an ALU or register.
If the instruction requires an ALU or specialized hardware
to complete, instruct the hardware to perform the requested operation.
Write the result from the ALU back to a memory location or
to a register or perhaps an output device.
Jump back to step (1).
Since the program counter is (conceptually) just another set
of memory cells, it can be changed by calculations done in the ALU. Adding 100
to the program counter would cause the next instruction to be read from a place
100 locations further down the program. 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).
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, which runs a microcodeprogram that causes all
of these events to happen.
Arithmetic logic unit (ALU)
Main article: Arithmetic logic unit
The ALU is capable of performing two classes of operations:
arithmetic and logic.[51]
The set of arithmetic operations that a particular ALU
supports may be limited to addition and subtraction, or might include
multiplication, division, trigonometry functions such as sine, cosine, etc.,
and square roots. Some can only operate on whole numbers (integers) whilst
others use floating point to represent real numbers, albeit with limited
precision. However, any computer that is capable of performing just the
simplest operations can be programmed to break down the more complex operations
into simple steps that it can perform. Therefore, any computer can be
programmed to perform any arithmetic operation—although it will take more time
to do so if its ALU does not directly support the operation. An ALU may also
compare numbers and return boolean truth values (true or false) depending on
whether one is equal to, greater than or less than the other (“is 64 greater
than 65?”).
Logic operations involve Boolean logic: AND, OR, XOR and
NOT. These can be useful for creating complicated conditional statementsand
processing boolean logic.
Superscalar computers may contain multiple ALUs, allowing
them to process several instructions simultaneously.[52] Graphics processors
and computers with SIMD and MIMD features often contain ALUs that can perform
arithmetic on vectors and matrices.
Memory
Main article: Computer data storage
Magnetic core memory was the computer memory of choice
throughout the 1960s, until it was replaced by semiconductor memory.
A computer's memory can be viewed as a list of cells into
which numbers can be placed or read. Each cell has a numbered “address” and can
store a single number. The computer can 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.” The information
stored in memory may represent practically anything. Letters, numbers, even
computer instructions can be placed into memory with equal ease. Since the CPU
does not differentiate between different types of information, it is the
software's responsibility to give significance to what the memory sees as
nothing but a series of numbers.
In almost all modern computers, each memory cell is set up
to store binary numbers in groups of eight bits (called a byte). Each byte is
able to represent 256 different numbers (2^8 = 256); either from 0 to 255 or
−128 to +127. To store larger numbers, several consecutive bytes may be used
(typically, two, four or eight). When negative numbers are required, they are
usually stored in two's complement notation. Other arrangements are possible,
but are usually not seen outside of specialized applications or historical
contexts. A computer can store any kind of information in memory if it can be
represented numerically. Modern computers have billions or even trillions of
bytes of memory.
The CPU contains a special set of memory cells called
registers that can be read and written to much more rapidly than the main
memory area. There are typically between two and one hundred registers
depending on the type of CPU. Registers are used for the most frequently needed
data items to avoid having to access main memory every time data is needed. As
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. RAM can be read and
written to anytime the CPU commands it, but ROM is preloaded with data and
software that never changes, therefore the CPU can only read from it. ROM is
typically used to store the computer's initial start-up instructions. In
general, the contents of RAM are erased when the power to the computer is
turned off, but ROM retains its data indefinitely. 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. In embedded computers, which frequently do not have disk drives, all of
the required software may be stored in ROM. Software stored in ROM is often
called firmware, because it is notionally more like hardware than software.
Flash memory blurs the distinction between ROM and RAM, as it retains its data
when turned off but is also rewritable. It is typically much slower than
conventional ROM and RAM however, so its use is restricted to applications
where high speed is unnecessary.[53]
In more sophisticated computers there may be one or more RAM
cache memories, which are slower than registers but faster than main memory.
Generally computers with this sort of cache are designed to move frequently
needed data into the cache automatically, often without the need for any
intervention on the programmer's part.
Input/output (I/O)
Main article: Input/output
Hard disk drives are common storage devices used with
computers.
I/O is the means by which a computer exchanges information
with the outside world.[54]Devices that provide input or output to the computer
are called peripherals.[55] On a typical personal computer, peripherals include
input devices like the keyboard and mouse, and output devices such as the
display and printer. Hard disk drives, floppy disk drives andoptical disc
drives serve as both input and output devices. Computer networking is another
form of I/O.
I/O devices are often complex computers in their own right,
with their own CPU and memory. A graphics processing unit might contain fifty
or more tiny computers that perform the calculations necessary to display 3D
graphics.[citation needed] Modern desktop computerscontain many smaller
computers that assist the main CPU in performing I/O.
Multitasking
Main article: Computer 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. This is achieved by
multitasking i.e. having the computer switch rapidly between running each
program in turn.[56]
One means by which this is done is with a special signal
called an interrupt, which can periodically cause the computer to stop
executing instructions where it was and do something else instead. By
remembering where it was executing prior to the interrupt, the computer can
return to that task later. If several programs are running “at the same time,”
then the interrupt generator might be causing several hundred interrupts per
second, causing a program switch each time. Since modern computers typically
execute instructions several orders of magnitude faster than human perception,
it may appear that many programs are running at the same time even though only
one is ever executing in any given instant. This method of multitasking is
sometimes termed “time-sharing” since each program is allocated a “slice” of
time in turn.[57]
Before the era of cheap computers, the principal 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, but most programs spend much of their
time waiting for slow input/output devices to complete their tasks. If a
program is waiting for the user to click on the mouse or press a key on the
keyboard, then it will not take a “time slice” until the event it is waiting
for has occurred. This frees up time for other programs to execute so that many
programs may be run simultaneously without unacceptable speed loss.
Multiprocessing
Main article: Multiprocessing
Cray designed many supercomputers that used multiprocessing
heavily.
Some computers are designed to distribute their work across
several CPUs in a multiprocessing configuration, a technique once employed only
in large and powerful machines such as supercomputers, mainframe computers and
servers. Multiprocessor andmulti-core (multiple CPUs on a single integrated
circuit) personal and laptop computers are now widely available, and are being
increasingly used in lower-end markets as a result.
Supercomputers in particular often have highly unique
architectures that differ significantly from the basic stored-program
architecture and from general purpose computers.[58] They often feature
thousands of CPUs, customized high-speed interconnects, and specialized computing
hardware. Such designs tend to be useful only for specialized tasks due to the
large scale of program organization required to successfully utilize most of
the available resources at once. Supercomputers usually see usage in
large-scale simulation, graphics rendering, and cryptography applications, as
well as with other so-called “embarrassingly parallel” tasks.
Networking and the Internet
Main articles: Computer networking and Internet
Visualization of a portion of the routeson the Internet
Computers have been used to coordinate information between
multiple locations since the 1950s. The U.S. military's SAGE system was the
first large-scale example of such a system, which led to a number of
special-purpose commercial systems such as Sabre.[59]
In the 1970s, computer engineers at research institutions
throughout the United States began to link their computers together using
telecommunications technology. The effort was funded by ARPA (now DARPA), and
the computer network that resulted was called theARPANET.[60] The technologies
that made the Arpanet possible spread and evolved.
In time, the network spread beyond academic and military
institutions and became known as the Internet. The emergence of networking
involved a redefinition of the nature and boundaries of the computer. 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. Initially these facilities were available
primarily to people working in high-tech environments, but in the 1990s the
spread of applications like e-mail and the World Wide Web, combined with the
development of cheap, fast networking technologies likeEthernet and ADSL saw
computer networking become almost ubiquitous. In fact, the number of computers
that are networked is growing phenomenally. A very large proportion of personal
computers regularly connect to the Internet to communicate and receive
information. “Wireless” networking, often utilizing mobile phone networks, has
meant networking is becoming increasingly ubiquitous even in mobile computing
environments.
Computer architecture paradigms
There are many types of computer architectures:
Quantum computer vs Chemical computer
Scalar processor vs Vector processor
Non-Uniform Memory Access (NUMA) computers
Register machine vs Stack machine
Harvard architecture vs von Neumann architecture
Cellular architecture
Of all these abstract machines, a quantum computer holds the
most promise for revolutionizing computing.[61]
Logic gates are a common abstraction which can apply to most
of the above digital or analog paradigms.
The ability to store and execute lists of instructions
called programs makes computers extremely versatile, distinguishing them fromcalculators.
The Church–Turing thesis is a mathematical statement of this versatility: any
computer with a minimum capability (being Turing-complete) is, in principle,
capable of performing the same tasks that any other computer can perform.
Therefore any type of computer (netbook, supercomputer, cellular automaton,
etc.) is able to perform the same computational tasks, given enough time and
storage capacity.
Misconceptions
Main articles: Human computer and Harvard Computers
Women as computers in NACA High Speed Flight Station
"Computer Room"
A computer does not need to be electronic, nor even have a
processor, nor RAM, nor even ahard disk. While popular usage of the word
“computer” is synonymous with a personal electronic computer, the modern[62]
definition of a computer is literally “A device that computes, especially a
programmable [usually] electronic machine that performs high-speed mathematical
or logical operations or that assembles, stores, correlates, or otherwise
processes information.”[63] Any device which processes information qualifies as
a computer, especially if the processing is purposeful.
Required technology
Main article: Unconventional computing
Historically, computers evolved from mechanical computers
and eventually from vacuum tubes to transistors. However, conceptually
computational systems as flexible as a personal computer can be built out of
almost anything. For example, a computer can be made out of billiard balls
(billiard ball computer); an often quoted example.[citation needed] More
realistically, modern computers are made out oftransistors made of
photolithographed semiconductors.
There is active research to make computers out of many
promising new types of technology, such as optical computers, DNA computers,
neural computers, and quantum computers. Most computers are universal, and are
able to calculate any computable function, and are limited only by their memory
capacity and operating speed. However different designs of computers can give
very different performance for particular problems; for example quantum
computers can potentially break some modern encryption algorithms (by quantum
factoring) very quickly.
Further topics
Glossary of computers
Artificial intelligence
A computer will solve problems in exactly the way it is programmed
to, without regard to efficiency, alternative solutions, possible shortcuts, or
possible errors in the code. Computer programs that learn and adapt are part of
the emerging field of artificial intelligenceand machine learning.
Hardware
Main articles: Computer hardware and Personal computer
hardware
The term hardware covers all of those parts of a computer
that are tangible objects. Circuits, displays, power supplies, cables,
keyboards, printers and mice are all hardware.
History of computing hardware
Main article: History of computing hardware
Rudimentary calculating devices first appeared in antiquity
and mechanical calculating aids were invented in the 17th century. The first
recorded use of the word "computer" is also from the 17th century,
applied to human computers, people who performed calculations, often as
employment. The first computer devices were conceived of in the 19th century,
and only emerged in their modern form in the 1940s.
First general-purpose computing device
A portion of Babbage's Difference engine.
Charles Babbage, an English mechanical engineer and
polymath, originated the concept of a programmable computer. Considered the
"father of the computer",[4] he conceptualized and invented the first
mechanical computer in the early 19th century. After working on his
revolutionary difference engine, designed to aid in navigational calculations,
in 1833 he realized that a much more general design, an Analytical Engine, was
possible. The input of programs and data was to be provided to the machine via
punched cards, a method being used at the time to direct mechanical looms such
as the Jacquard loom. For output, the machine would have a printer, a curve
plotter and a bell. The machine would also be able to punch numbers onto cards
to be read in later. The Engine incorporated an arithmetic logic unit, control
flow in the form of conditional branching and loops, and integrated memory,
making it the first design for a general-purpose computer that could be
described in modern terms as Turing-complete.[5][6]
The machine was about a century ahead of its time. All the
parts for his machine had to be made by hand - this was a major problem for a
device with thousands of parts. Eventually, the project was dissolved with the
decision of the British Government to cease funding. Babbage's failure to
complete the analytical engine can be chiefly attributed to difficulties not
only of politics and financing, but also to his desire to develop an
increasingly sophisticated computer and to move ahead faster than anyone else
could follow. Nevertheless his son, Henry Babbage, completed a simplified
version of the analytical engine's computing unit (themill) in 1888. He gave a
successful demonstration of its use in computing tables in 1906.
Analog computers
Sir William Thomson's third tide-predicting machine design,
1879-81
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. However, these were not programmable and generally lacked the
versatility and accuracy of modern digital computers.[7]
The first modern analog computer was a tide-predicting
machine, invented by Sir William Thomson in 1872. The differential analyser, a
mechanical analog computer designed to solve differential equations by
integration using wheel-and-disc mechanisms, was conceptualized in 1876 by
James Thomson, the brother of the more famous Lord Kelvin.[8]
The art of mechanical analog computing reached its zenith
with the differential analyzer, built by H. L. Hazen and Vannevar Bush at MIT
starting in 1927. This built on the mechanical integrators of James Thomson and
the torque amplifiers invented by H. W. Nieman. A dozen of these devices were
built before their obsolescence became obvious.
The modern computer
Alan Turing was the first to conceptualize the modern
computer, a device that became known as the Universal Turing machine.
The principle of the modern computer was first described by
computer scientist Alan Turing, who set out the idea in his seminal 1936
paper,[9] On Computable Numbers. Turing reformulated Kurt Gödel's 1931 results
on the limits of proof and computation, replacing Gödel's universal arithmetic-based
formal language with the formal and simple hypothetical devices that became
known as Turing machines. He proved that some such machine would be capable of
performing any conceivable mathematical computation if it were representable as
an algorithm. He went on to prove that there was no solution to the
Entscheidungsproblem by first showing that the halting problem for Turing
machines isundecidable: in general, it is not possible to decide
algorithmically whether a given Turing machine will ever halt.
He also introduced the notion of a 'Universal Machine' (now
known as a Universal Turing machine), with the idea that such a machine could
perform the tasks of any other machine, or in other words, it is provably
capable of computing anything that is computable by executing a program stored
on tape, allowing the machine to be programmable. Von Neumann acknowledged that
the central concept of the modern computer was due to this paper.[10] Turing
machines are to this day a central object of study intheory of computation.
Except for the limitations imposed by their finite memory stores, modern
computers are said to be Turing-complete, which is to say, they have algorithm
execution capability equivalent to a universal Turing machine.
Electromechanical computers
Replica of Zuse's Z3, the first fully automatic, digital
(electromechanical) computer.
Early digital computers were electromechanical - electric
switches drove mechanical relays to perform the calculation. These devices had
a low operating speed and were eventually superseded by much faster
all-electric computers, originally using vacuum tubes. The Z2, created by
German engineer Konrad Zuse in 1939, was one of the earliest examples of an
electromechanical relay computer.[11]
In 1941, Zuse followed his earlier machine up with the Z3,
the world's first workingelectromechanical programmable, fully automatic
digital computer.[12][13] The Z3 was built with 2000 relays, implementing a 22
bit word length that operated at a clock frequency of about 5–10 Hz.[14]
Program code and data were stored on punched film. It was quite similar to
modern machines in some respects, pioneering numerous advances such as floating
point numbers. Replacement of the hard-to-implement decimal system (used in
Charles Babbage's earlier design) by the simpler binary system meant that
Zuse's machines were easier to build and potentially more reliable, given the
technologies available at that time.[15] The Z3 was probably a complete Turing
machine.
Electronic programmable computer
Purely electronic circuit elements soon replaced their
mechanical and electromechanical equivalents, at the same time that digital
calculation replaced analog. The engineer Tommy Flowers, working at the Post
Office Research Station in Dollis Hill in the 1930s, began to explore the
possible use of electronics for the telephone exchange. Experimental equipment
that he built in 1934 went into operation 5 years later, converting a portion
of the telephone exchange network into an electronic data processing system,
using thousands of vacuum tubes.[7] In the US, John Vincent Atanasoff and
Clifford E. Berry of Iowa State University developed and tested
theAtanasoff–Berry Computer (ABC) in 1942,[16] the first "automatic
electronic digital computer".[17] This design was also all-electronic and
used about 300 vacuum tubes, with capacitors fixed in a mechanically rotating
drum for memory.[18]
Colossus was the first electronic digitalprogrammable
computing device, and was used to break German ciphers during World War II.
During World War II, the British at Bletchley Park achieved
a number of successes at breaking encrypted German military communications. The
German encryption machine,Enigma, was first attacked with the help of the
electro-mechanical bombes. To crack the more sophisticated German Lorenz SZ
40/42 machine, used for high-level Army communications, Max Newman and his
colleagues commissioned Flowers to build the Colossus.[18] He spent eleven
months from early February 1943 designing and building the first Colossus.[19]
After a functional test in December 1943, Colossus was shipped to Bletchley
Park, where it was delivered on 18 January 1944[20] and attacked its first
message on 5 February.[18]
Colossus was the world's first electronic digital
programmable computer.[7] It used a large number of valves (vacuum tubes). It
had paper-tape input and was capable of being configured to perform a variety
of boolean logical operations on its data, but it was not Turing-complete. Nine
Mk II Colossi were built (The Mk I was converted to a Mk II making ten machines
in total). Colossus Mark I contained 1500 thermionic valves (tubes), but Mark
II with 2400 valves, was both 5 times faster and simpler to operate than Mark
1, greatly speeding the decoding process.[21][22]
ENIAC was the first Turing-complete device,and performed
ballistics trajectory calculations for the United States Army.
The US-built ENIAC[23] (Electronic Numerical Integrator and
Computer) was the first electronic programmable computer built in the US. Although
the ENIAC was similar to the Colossus it was much faster and more flexible. It
was unambiguously a Turing-complete device and could compute any problem that
would fit into its memory. Like the Colossus, a "program" on the
ENIAC was defined by the states of its patch cables and switches, a far cry
from the stored program electronic machines that came later. Once a program was
written, it had to be mechanically set into the machine with manual resetting
of plugs and switches.
It combined the high speed of electronics with the ability
to be programmed for many complex problems. It could add or subtract 5000 times
a second, a thousand times faster than any other machine. It also had modules
to multiply, divide, and square root. High speed memory was limited to 20 words
(about 80 bytes). Built under the direction of John Mauchlyand J. Presper
Eckert at the University of Pennsylvania, ENIAC's development and construction
lasted from 1943 to full operation at the end of 1945. The machine was huge,
weighing 30 tons, using 200 kilowatts of electric power and contained over
18,000 vacuum tubes, 1,500 relays, and hundreds of thousands of resistors,
capacitors, and inductors.[24]
Stored program computer
Three tall racks containing electronic circuit boards
A section of the Manchester Small-Scale Experimental
Machine, the first stored-program computer.
Early computing machines had fixed programs. Changing its
function required the re-wiring and re-structuring of the machine.[18] With the
proposal of the stored-program computer this changed. A stored-program computer
includes by design an instruction set and can store in memory a set of
instructions (a program) that details thecomputation. The theoretical basis for
the stored-program computer was laid by Alan Turing in his 1936 paper. In 1945
Turing joined the National Physical Laboratory and began work on developing an
electronic stored-program digital computer. His 1945 report ‘Proposed
Electronic Calculator’ was the first specification for such a device.John von Neumann
at the University of Pennsylvania, also circulated his First Draft of a Report
on the EDVAC in 1945.[7]
Ferranti Mark 1, c. 1951.
The Manchester Small-Scale Experimental Machine, nicknamed
Baby, was the world's firststored-program computer. It was built at theVictoria
University of Manchester by Frederic C. Williams, Tom Kilburn and Geoff
Tootill, and ran its first program on 21 June 1948.[25] It was designed as a
testbed for the Williams tube the firstrandom-access digital storage
device.[26] Although the computer was considered "small and
primitive" by the standards of its time, it was the first working machine
to contain all of the elements essential to a modern electronic computer.[27]
As soon as the SSEM had demonstrated the feasibility of its design, a project
was initiated at the university to develop it into a more usable computer, the
Manchester Mark 1.
The Mark 1 in turn quickly became the prototype for the
Ferranti Mark 1, the world's first commercially available general-purpose
computer.[28] Built by Ferranti, it was delivered to theUniversity of
Manchester in February 1951. At least seven of these later machines were
delivered between 1953 and 1957, one of them to Shell labs in Amsterdam.[29] In
October 1947, the directors of British catering company J. Lyons & Company
decided to take an active role in promoting the commercial development of
computers. The LEO I computer became operational in April 1951 [30] and ran the
world's first regular routine office computer job.
Transistor computers
A bipolar junction transistor
The bipolar transistor was invented in 1947. From 1955
onwards transistors replaced vacuum tubes in computer designs, giving rise to
the "second generation" of computers. Compared to vacuum tubes,
transistors have many advantages: they are smaller, and require less power than
vacuum tubes, so give off less heat. Silicon junction transistors were much
more reliable than vacuum tubes and had longer, indefinite, service life.
Transistorized computers could contain tens of thousands of binary logic
circuits in a relatively compact space.
At the University of Manchester, a team under the leadership
of Tom Kilburn designed and built a machine using the newly developed
transistors instead of valves.[31] Their firsttransistorised computer and the
first in the world, was operational by 1953, and a second version was completed
there in April 1955. However, the machine did make use of valves to generate
its 125 kHz clock waveforms and in the circuitry to read and write on its
magneticdrum memory, so it was not the first completely transistorized
computer. That distinction goes to the Harwell CADET of 1955,[32] built by the
electronics division of the Atomic Energy Research Establishment at
Harwell.[33][34]
The integrated circuit
The next great advance in computing power came with the
advent of the integrated circuit. The idea of the integrated circuit was first
conceived by a radar scientist working for the Royal Radar Establishment of the
Ministry of Defence, Geoffrey W.A. Dummer. Dummer presented the first public
description of an integrated circuit at the Symposium on Progress in Quality
Electronic Components inWashington, D.C. on 7 May 1952.[35]
The first practical ICs were invented by Jack Kilby at Texas
Instruments and Robert Noyce at Fairchild Semiconductor.[36] Kilby recorded his
initial ideas concerning the integrated circuit in July 1958, successfully
demonstrating the first working integrated example on 12 September 1958.[37] In
his patent application of 6 February 1959, Kilby described his new device as “a
body of semiconductor material ... wherein all the components of the electronic
circuit are completely integrated.”[38][39] Noyce also came up with his own
idea of an integrated circuit half a year later than Kilby.[40] His chip solved
many practical problems that Kilby's had not. Produced at Fairchild
Semiconductor, it was made of silicon, whereas Kilby's chip was made of
germanium.
This new development heralded an explosion in the commercial
and personal use of computers and led to the invention of themicroprocessor.
While the subject of exactly which device was the first microprocessor is
contentious, partly due to lack of agreement on the exact definition of the
term "microprocessor", it is largely undisputed that the first
single-chip microprocessor was the Intel 4004,[41] designed and realized by Ted
Hoff, Federico Faggin, and Stanley Mazor at Intel.[42]
Programs
The defining feature of modern computers which distinguishes
them from all other machines is that they can be programmed. That is to say
that some type of instructions (the program) can be given to the computer, and
it will process them. Modern computers based on the von Neumann architecture
often have machine code in the form of an imperative programming language.
In practical terms, a computer program may be just a few
instructions or extend to many millions of instructions, as do the programs
forword processors and web browsers for example. A typical modern computer can
execute billions of instructions per second (gigaflops) and rarely makes a
mistake over many years of operation. Large computer programs consisting of
several million instructions may take teams of programmers years to write, and
due to the complexity of the task almost certainly contain errors.
Stored program architecture
Main articles: Computer program and Computer programming
Replica of the Small-Scale Experimental Machine (SSEM), the
world's first stored-program computer, at the Museum of Science and Industry in
Manchester, England
This section applies to most common RAM machine-based
computers.
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. These instructions are read from the computer's
memory and are generally carried out (executed) in the order they were given.
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. These are called “jump” instructions (or branches).
Furthermore, jump instructions may be made to happen conditionally so that
different sequences of instructions may be used depending on the result of some
previous calculation or some external event. Many computers directly support
subroutines by providing a type of jump that “remembers” the location it jumped
from and another instruction to return to the instruction following that jump
instruction.
Program execution might be likened to reading a book. While
a person will normally read each word and line in sequence, they may at times
jump back to an earlier place in the text or skip sections that are not of
interest. Similarly, a computer may sometimes go back and repeat the
instructions in some section of the program over and over again until some
internal condition is met. This is called the flow of control within the
program and it is what allows the computer to perform tasks repeatedly without
human intervention.
Comparatively, a person using a pocket calculator can
perform a basic arithmetic operation such as adding two numbers with just a few
button presses. But to add together all of the numbers from 1 to 1,000 would
take thousands of button presses and a lot of time, with a near certainty of
making a mistake. On the other hand, a computer may be programmed to do this
with just a few simple instructions. For example:
mov No. 0,
sum ; set sum to 0
mov No. 1,
num ; set num to 1
loop: add num, sum
; add num to sum
add No. 1, num ; add 1 to num
cmp num,
#1000 ; compare num to 1000
ble loop ; if num <= 1000, go back to 'loop'
halt ; end of program. stop running
Once told to run this program, the computer will perform the
repetitive addition task without further human intervention. It will almost
never make a mistake and a modern PC can complete the task in about a millionth
of a second.[43]
Bugs
Main article: Software bug
The actual first computer bug, a moth found trapped on a
relay of the Harvard Mark II computer
Errors in computer programs are called “bugs.” They may be
benign and not affect the usefulness of the program, or have only subtle
effects. But in some cases, they may cause the program or the entire system to
“hang,” becoming unresponsive to input such as mouseclicks or keystrokes, to
completely fail, or to crash. Otherwise benign bugs may sometimes be harnessed
for malicious intent by an unscrupulous user writing an exploit, code designed
to take advantage of a bug and disrupt a computer's proper execution. Bugs are
usually not the fault of the computer. Since computers merely execute the
instructions they are given, bugs are nearly always the result of programmer
error or an oversight made in the program's design.[44]
Admiral Grace Hopper, an American computer scientist and
developer of the first compiler, is credited for having first used the term
“bugs” in computing after a dead moth was found shorting a relay in the Harvard
Mark II computer in September 1947.[45]
Machine code
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 command to add two numbers together would have
one opcode; the command to multiply them would have a different opcode, and so
on. 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 these instructions) can be
represented as lists of numbers and can themselves be manipulated inside the
computer in the same way as 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. This is called the Harvard architecture after the
Harvard Mark I computer. Modern von Neumann computers display some traits of
the Harvard architecture in their designs, such as in CPU caches.
While it is possible to write computer programs as long
lists of numbers (machine language) and while this technique was used with many
early computers,[46] it is extremely tedious and potentially error-prone to do
so in practice, especially for complicated programs. Instead, each basic
instruction can be given a short name that is indicative of its function and
easy to remember – a mnemonic such as ADD, SUB, MULT or JUMP. These mnemonics
are collectively known as a computer's assembly language. 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.
A 1970s punched card containing one line from a FORTRAN program.
The card reads: “Z(1) = Y + W(1)” and is labeled “PROJ039” for identification
purposes.
Programming language
Main article: Programming language
Programming languages provide various ways of specifying
programs for computers to run. Unlike natural languages, programming languages
are designed to permit no ambiguity and to be concise. They are purely written
languages and are often difficult to read aloud. They are generally either
translated into machine code by a compiler or an assembler before being run, or
translated directly at run time by an interpreter. Sometimes programs are
executed by a hybrid method of the two techniques.
Low-level languages
Main article: Low-level programming language
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. For instance, 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.[47]
Higher-level languages
Main article: High-level programming language
Though considerably easier than in machine language, writing
long programs in assembly language is often difficult and is also error prone.
Therefore, most practical programs are written in more abstract high-level
programming languages that are able to express the needs of the 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.[48] High level languages are less related to the workings of the
target computer than assembly language, and more related to the language and
structure of the problem(s) to be solved by the final program. It is therefore
often 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.
Program design
Question book-new.svg
This section does not cite any references or sources. Please
help improve this section byadding citations to reliable sources. Unsourced
material may be challenged and removed.(July 2012)
Program design of small programs is relatively simple and
involves the analysis of the problem, collection of inputs, using the
programming constructs within languages, devising or using established
procedures and algorithms, providing data for output devices and solutions to
the problem as applicable. As problems become larger and more complex, features
such as subprograms, modules, formal documentation, and new paradigms such as
object-oriented programming are encountered. Large programs involving thousands
of line of code and more require formal software methodologies. The task of
developing large software systems presents a significant intellectual
challenge. Producing software with an acceptably high reliability within a
predictable schedule and budget has historically been difficult; the academic
and professional discipline of software engineering concentrates specifically
on this challenge.
Components
Main articles: Central processing unit and Microprocessor
File:Computer Components.webm
Video demonstrating the standard components of a
"slimline" computer
A general purpose computer has four main components: the
arithmetic logic unit (ALU), thecontrol unit, the memory, and the input and
output devices (collectively termed I/O). These parts are interconnected by
buses, often made of groups of wires.
Inside each of these parts are thousands to trillions of
small electrical circuits which can be turned off or on by means of an
electronic switch. Each circuit represents a bit (binary digit) of information
so that when the circuit is on it represents a “1”, and when off it represents
a “0” (in positive logic representation). The circuits are arranged in logic
gates so that one or more of the circuits may control the state of one or more
of the other circuits.
The control unit, ALU, registers, and basic I/O (and often
other hardware closely linked with these) are collectively known as a central
processing unit (CPU). Early CPUs were composed of many separate components but
since the mid-1970s CPUs have typically been constructed on a single integrated
circuit called a microprocessor.
Control unit
Main articles: CPU design and Control unit
Diagram showing how a particular MIPS architecture
instruction would be decoded by the control system
The control unit (often called a control system or central
controller) manages the computer's various components; it reads and interprets
(decodes) the program instructions, transforming them into a series of control
signals which activate other parts of the computer.[49] Control systems in
advanced computers may change the order of some instructions so as to improve
performance.
A key component common to all CPUs is the program counter, a
special memory cell (aregister) that keeps track of which location in memory
the next instruction is to be read from.[50]
The control system's function is as follows—note that this
is a simplified description, and some of these steps may be performed
concurrently or in a different order depending on the type of CPU:
Read the code for the next instruction from the cell
indicated by the program counter.
Decode the numerical code for the instruction into a set of
commands or signals for each of the other systems.
Increment the program counter so it points to the next
instruction.
Read whatever data the instruction requires from cells in
memory (or perhaps from an input device). The location of this required data is
typically stored within the instruction code.
Provide the necessary data to an ALU or register.
If the instruction requires an ALU or specialized hardware
to complete, instruct the hardware to perform the requested operation.
Write the result from the ALU back to a memory location or
to a register or perhaps an output device.
Jump back to step (1).
Since the program counter is (conceptually) just another set
of memory cells, it can be changed by calculations done in the ALU. Adding 100
to the program counter would cause the next instruction to be read from a place
100 locations further down the program. 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).
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, which runs a microcodeprogram that causes all
of these events to happen.
Arithmetic logic unit (ALU)
Main article: Arithmetic logic unit
The ALU is capable of performing two classes of operations:
arithmetic and logic.[51]
The set of arithmetic operations that a particular ALU
supports may be limited to addition and subtraction, or might include
multiplication, division, trigonometry functions such as sine, cosine, etc.,
and square roots. Some can only operate on whole numbers (integers) whilst
others use floating point to represent real numbers, albeit with limited
precision. However, any computer that is capable of performing just the
simplest operations can be programmed to break down the more complex operations
into simple steps that it can perform. Therefore, any computer can be
programmed to perform any arithmetic operation—although it will take more time
to do so if its ALU does not directly support the operation. An ALU may also
compare numbers and return boolean truth values (true or false) depending on
whether one is equal to, greater than or less than the other (“is 64 greater
than 65?”).
Logic operations involve Boolean logic: AND, OR, XOR and
NOT. These can be useful for creating complicated conditional statementsand
processing boolean logic.
Superscalar computers may contain multiple ALUs, allowing
them to process several instructions simultaneously.[52] Graphics processors
and computers with SIMD and MIMD features often contain ALUs that can perform
arithmetic on vectors and matrices.
Memory
Main article: Computer data storage
Magnetic core memory was the computer memory of choice
throughout the 1960s, until it was replaced by semiconductor memory.
A computer's memory can be viewed as a list of cells into
which numbers can be placed or read. Each cell has a numbered “address” and can
store a single number. The computer can 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.” The information
stored in memory may represent practically anything. Letters, numbers, even
computer instructions can be placed into memory with equal ease. Since the CPU
does not differentiate between different types of information, it is the
software's responsibility to give significance to what the memory sees as
nothing but a series of numbers.
In almost all modern computers, each memory cell is set up
to store binary numbers in groups of eight bits (called a byte). Each byte is
able to represent 256 different numbers (2^8 = 256); either from 0 to 255 or
−128 to +127. To store larger numbers, several consecutive bytes may be used (typically,
two, four or eight). When negative numbers are required, they are usually
stored in two's complement notation. Other arrangements are possible, but are
usually not seen outside of specialized applications or historical contexts. A
computer can store any kind of information in memory if it can be represented
numerically. Modern computers have billions or even trillions of bytes of
memory.
The CPU contains a special set of memory cells called
registers that can be read and written to much more rapidly than the main
memory area. There are typically between two and one hundred registers
depending on the type of CPU. Registers are used for the most frequently needed
data items to avoid having to access main memory every time data is needed. As
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. RAM can be read and
written to anytime the CPU commands it, but ROM is preloaded with data and
software that never changes, therefore the CPU can only read from it. ROM is
typically used to store the computer's initial start-up instructions. In
general, the contents of RAM are erased when the power to the computer is
turned off, but ROM retains its data indefinitely. 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. In embedded computers, which frequently do not have disk
drives, all of the required software may be stored in ROM. Software stored in
ROM is often called firmware, because it is notionally more like hardware than
software. Flash memory blurs the distinction between ROM and RAM, as it retains
its data when turned off but is also rewritable. It is typically much slower
than conventional ROM and RAM however, so its use is restricted to applications
where high speed is unnecessary.[53]
In more sophisticated computers there may be one or more RAM
cache memories, which are slower than registers but faster than main memory.
Generally computers with this sort of cache are designed to move frequently
needed data into the cache automatically, often without the need for any
intervention on the programmer's part.
Input/output (I/O)
Main article: Input/output
Hard disk drives are common storage devices used with
computers.
I/O is the means by which a computer exchanges information
with the outside world.[54]Devices that provide input or output to the computer
are called peripherals.[55] On a typical personal computer, peripherals include
input devices like the keyboard and mouse, and output devices such as the
display and printer. Hard disk drives, floppy disk drives andoptical disc
drives serve as both input and output devices. Computer networking is another
form of I/O.
I/O devices are often complex computers in their own right,
with their own CPU and memory. A graphics processing unit might contain fifty
or more tiny computers that perform the calculations necessary to display 3D
graphics.[citation needed] Modern desktop computerscontain many smaller
computers that assist the main CPU in performing I/O.
Multitasking
Main article: Computer 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. This is achieved by
multitasking i.e. having the computer switch rapidly between running each
program in turn.[56]
One means by which this is done is with a special signal
called an interrupt, which can periodically cause the computer to stop
executing instructions where it was and do something else instead. By
remembering where it was executing prior to the interrupt, the computer can
return to that task later. If several programs are running “at the same time,”
then the interrupt generator might be causing several hundred interrupts per
second, causing a program switch each time. Since modern computers typically
execute instructions several orders of magnitude faster than human perception,
it may appear that many programs are running at the same time even though only
one is ever executing in any given instant. This method of multitasking is
sometimes termed “time-sharing” since each program is allocated a “slice” of
time in turn.[57]
Before the era of cheap computers, the principal 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, but most programs spend much of their
time waiting for slow input/output devices to complete their tasks. If a
program is waiting for the user to click on the mouse or press a key on the
keyboard, then it will not take a “time slice” until the event it is waiting
for has occurred. This frees up time for other programs to execute so that many
programs may be run simultaneously without unacceptable speed loss.
Multiprocessing
Main article: Multiprocessing
Cray designed many supercomputers that used multiprocessing
heavily.
Some computers are designed to distribute their work across
several CPUs in a multiprocessing configuration, a technique once employed only
in large and powerful machines such as supercomputers, mainframe computers and
servers. Multiprocessor andmulti-core (multiple CPUs on a single integrated
circuit) personal and laptop computers are now widely available, and are being
increasingly used in lower-end markets as a result.
Supercomputers in particular often have highly unique
architectures that differ significantly from the basic stored-program
architecture and from general purpose computers.[58] They often feature
thousands of CPUs, customized high-speed interconnects, and specialized
computing hardware. Such designs tend to be useful only for specialized tasks
due to the large scale of program organization required to successfully utilize
most of the available resources at once. Supercomputers usually see usage in
large-scale simulation, graphics rendering, and cryptography applications, as
well as with other so-called “embarrassingly parallel” tasks.
Networking and the Internet
Main articles: Computer networking and Internet
Visualization of a portion of the routeson the Internet
Computers have been used to coordinate information between
multiple locations since the 1950s. The U.S. military's SAGE system was the
first large-scale example of such a system, which led to a number of
special-purpose commercial systems such as Sabre.[59]
In the 1970s, computer engineers at research institutions
throughout the United States began to link their computers together using
telecommunications technology. The effort was funded by ARPA (now DARPA), and
the computer network that resulted was called theARPANET.[60] The technologies
that made the Arpanet possible spread and evolved.
In time, the network spread beyond academic and military
institutions and became known as the Internet. The emergence of networking
involved a redefinition of the nature and boundaries of the computer. 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. Initially these facilities were available
primarily to people working in high-tech environments, but in the 1990s the
spread of applications like e-mail and the World Wide Web, combined with the
development of cheap, fast networking technologies likeEthernet and ADSL saw
computer networking become almost ubiquitous. In fact, the number of computers
that are networked is growing phenomenally. A very large proportion of personal
computers regularly connect to the Internet to communicate and receive
information. “Wireless” networking, often utilizing mobile phone networks, has
meant networking is becoming increasingly ubiquitous even in mobile computing
environments.
Computer architecture paradigms
There are many types of computer architectures:
Quantum computer vs Chemical computer
Scalar processor vs Vector processor
Non-Uniform Memory Access (NUMA) computers
Register machine vs Stack machine
Harvard architecture vs von Neumann architecture
Cellular architecture
Of all these abstract machines, a quantum computer holds the
most promise for revolutionizing computing.[61]
Logic gates are a common abstraction which can apply to most
of the above digital or analog paradigms.
The ability to store and execute lists of instructions
called programs makes computers extremely versatile, distinguishing them
fromcalculators. The Church–Turing thesis is a mathematical statement of this
versatility: any computer with a minimum capability (being Turing-complete) is,
in principle, capable of performing the same tasks that any other computer can
perform. Therefore any type of computer (netbook, supercomputer, cellular
automaton, etc.) is able to perform the same computational tasks, given enough
time and storage capacity.
Misconceptions
Main articles: Human computer and Harvard Computers
Women as computers in NACA High Speed Flight Station
"Computer Room"
A computer does not need to be electronic, nor even have a
processor, nor RAM, nor even ahard disk. While popular usage of the word
“computer” is synonymous with a personal electronic computer, the modern[62]
definition of a computer is literally “A device that computes, especially a
programmable [usually] electronic machine that performs high-speed mathematical
or logical operations or that assembles, stores, correlates, or otherwise
processes information.”[63] Any device which processes information qualifies as
a computer, especially if the processing is purposeful.
Required technology
Main article: Unconventional computing
Historically, computers evolved from mechanical computers
and eventually from vacuum tubes to transistors. However, conceptually
computational systems as flexible as a personal computer can be built out of
almost anything. For example, a computer can be made out of billiard balls
(billiard ball computer); an often quoted example.[citation needed] More realistically,
modern computers are made out oftransistors made of photolithographed
semiconductors.
There is active research to make computers out of many
promising new types of technology, such as optical computers, DNA computers,
neural computers, and quantum computers. Most computers are universal, and are
able to calculate any computable function, and are limited only by their memory
capacity and operating speed. However different designs of computers can give
very different performance for particular problems; for example quantum
computers can potentially break some modern encryption algorithms (by quantum
factoring) very quickly.
Further topics
Glossary of computers
Artificial intelligence
A computer will solve problems in exactly the way it is
programmed to, without regard to efficiency, alternative solutions, possible
shortcuts, or possible errors in the code. Computer programs that learn and
adapt are part of the emerging field of artificial intelligenceand machine
learning.
Hardware
Main articles: Computer hardware and Personal computer
hardware
The term hardware covers all of those parts of a computer
that are tangible objects. Circuits, displays, power supplies, cables,
keyboards, printers and mice are all hardware.
History of computing hardware
Main article: History of computing hardware
First generation (mechanical/electromechanical) Calculators Pascal's calculator, Arithmometer, Difference engine,
Quevedo's analytical machines
Programmable devices Jacquard
loom, Analytical engine, IBM ASCC/Harvard Mark I,Harvard Mark II, IBM SSEC, Z1,
Z2, Z3
Second generation (vacuum tubes) Calculators Atanasoff–Berry
Computer, IBM 604, UNIVAC 60, UNIVAC 120
Programmable devices Colossus,
ENIAC, Manchester Small-Scale Experimental Machine, EDSAC, Manchester Mark 1,
Ferranti Pegasus, Ferranti Mercury, CSIRAC, EDVAC, UNIVAC I, IBM 701, IBM 702,
IBM 650, Z22
Third generation (discrete transistors and SSI, MSI,
LSIintegrated circuits) Mainframes IBM 7090, IBM 7080, IBM System/360, BUNCH
Minicomputer PDP-8,
PDP-11, IBM System/32, IBM System/36
Fourth generation (VLSI integrated circuits) Minicomputer VAX, IBM System i
4-bit microcomputer Intel
4004, Intel 4040
8-bit microcomputer Intel
8008, Intel 8080, Motorola 6800, Motorola 6809, MOS Technology 6502, Zilog Z80
16-bit microcomputer Intel
8088, Zilog Z8000, WDC 65816/65802
32-bit microcomputer Intel
80386, Pentium, Motorola 68000, ARM
64-bit microcomputer[64] Alpha,
MIPS, PA-RISC, PowerPC, SPARC, x86-64, ARMv8-A
Embedded computer Intel
8048, Intel 8051
Personal computer Desktop
computer, Home computer, Laptop computer, Personal digital assistant (PDA),
Portable computer, Tablet PC, Wearable computer
Theoretical/experimental Quantum
computer, Chemical computer, DNA computing, Optical computer, Spintronics based
computer
Other hardware topics
Peripheral device(input/output) Input Mouse,
keyboard, joystick, image scanner, webcam, graphics tablet,microphone
Output Monitor,
printer, loudspeaker
Both Floppy disk
drive, hard disk drive, optical disc drive, teleprinter
Computer busses Short
range RS-232, SCSI, PCI, USB
Long range (computer networking) Ethernet, ATM, FDDI
Software
Main article: Computer software
Software refers to parts of the computer which do not have a
material form, such as programs, data, protocols, etc. When software is stored
in hardware that cannot easily be modified (such as BIOS ROM in an IBM PC
compatible), it is sometimes called “firmware.”
Operating system Unix
and BSD UNIX System V, IBM AIX, HP-UX,
Solaris (SunOS), IRIX, List of BSD operating systems
GNU/Linux List
of Linux distributions, Comparison of Linux distributions
Microsoft Windows Windows
95, Windows 98, Windows NT, Windows 2000, Windows Me, Windows XP, Windows
Vista,Windows 7, Windows 8
DOS 86-DOS
(QDOS), IBM PC DOS, MS-DOS, DR-DOS, FreeDOS
Mac OS Mac OS classic,
Mac OS X
Embedded andreal-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, Standard Template 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, KDE, QNX Photon, CDE, GEM, Aqua
Text-based user interface Command-line
interface, Text user interface
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, Software 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
Languages
There are thousands of different programming languages—some
intended to be general purpose, others useful only for highly specialized
applications.
Programming languages
Lists of programming languages Timeline of programming languages, List of
programming languages by category, Generational list of programming languages,
List of programming languages, Non-English-based programming languages
Commonly used assembly languages ARM, MIPS, x86
Commonly used high-level programming languages Ada, BASIC, C, C++, C#, COBOL, Fortran,
Java, Lisp, Pascal, Object Pascal
Commonly used scripting languages Bourne script, 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, Electronic engineering, Computer engineering, Telecommunications
engineering, Optical engineering,Nanoengineering
Software-related Computer
science, Computer engineering, Desktop publishing, Human–computer interaction,
Information technology,Information systems, Computational science, Software
engineering, Video game industry, 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,
AIS, IET, IFIP, BCS
Free/open source software groups Free Software Foundation, Mozilla Foundation, Apache
Software Foundation
Degradation
Rasberry crazy ants have been known to consume the insides
of electrical wiring in computers; preferring DC to AC currents. This behavior
is not well understood by scientists.[65]
See also
Portal icon Information
technology portal
Computability theory
Computer insecurity
Computer security
List of computer term etymologies
List of fictional computers
Pulse computation
TOP500 (list of most powerful computers)
Notes
Jump up^ In 1946, ENIAC required an estimated 174 kW. By
comparison, a modern laptop computer may use around 30 W; nearly six thousand
times less. "Approximate Desktop & Notebook Power Usage".
University of Pennsylvania. Retrieved 20 June 2009.
Jump up^ Early computers such as Colossus and ENIAC were
able to process between 5 and 100 operations per second. A modern “commodity”
microprocessor (as of 2007) can process billions of operations per second, and
many of these operations are more complicated and useful than early computer
operations."Intel Core2 Duo Mobile Processor: Features". Intel
Corporation. Retrieved 20 June 2009.
Jump up^ computer, n.. Oxford English Dictionary (2 ed.).
Oxford University Press. 1989. Retrieved 10 April 2009.
Jump up^ Halacy, Daniel Stephen (1970). Charles Babbage,
Father of the Computer. Crowell-Collier Press. ISBN 0-02-741370-5.
Jump up^ "Babbage". Online stuff. Science Museum.
2007-01-19. Retrieved 2012-08-01.
Jump up^ "Let's build Babbage's ultimate mechanical
computer".opinion. New Scientist. 23 December 2010. Retrieved 2012-08-01.
^ Jump up to:a b c d "The Modern History of
Computing". Stanford Encyclopedia of Philosophy.
Jump up^ Ray Girvan, "The revealed grace of the
mechanism: computing after Babbage", Scientific Computing World, May/June
2003
Jump up^ Proceedings of the London Mathematical Society
Jump up^ "von Neumann ... firmly emphasized to me, and
to others I am sure, that the fundamental conception is owing to Turing—insofar
as not anticipated by Babbage, Lovelace and others." Letter by Stanley
Frankel to Brian Randell, 1972, quoted in Jack Copeland (2004) The Essential
Turing, p22.
Jump up^ Zuse, Horst. "Part 4: Konrad Zuse's Z1 and Z3
Computers".The Life and Work of Konrad Zuse. EPE Online. Archived fromthe
original on 2008-06-01. Retrieved 2008-06-17.
Jump up^ Zuse, Konrad (2010) [1984], The Computer – My
LifeTranslated by McKenna, Patricia and Ross, J. Andrew from: Der Computer,
mein Lebenswerk (1984) (in English translated from German), Berlin/Heidelberg:
Springer-Verlag, ISBN 978-3-642-08151-4
Jump up^ "A Computer Pioneer Rediscovered, 50 Years
On". The New York Times. April 20, 1994.
Jump up^ Zuse, Konrad (1993). Der Computer. Mein Lebenswerk.
(in German) (3rd ed.). Berlin: Springer-Verlag. p. 55. ISBN 978-3-540-56292-4.
Jump up^ Crash! The Story of IT: Zuse at the Wayback
Machine(archived March 18, 2008)
Jump up^ January 15, 1941 notice in the Des Moines Register,
Jump up^ Arthur W. Burks. The First Electronic Computer.
^ Jump up to:a b c d Copeland, Jack (2006), Colossus: The
Secrets of Bletchley Park's Codebreaking Computers, Oxford: Oxford University
Press, pp. 101–115, ISBN 0-19-284055-X
Jump up^ "Bletchley's code-cracking Colossus", BBC
News, 2 February 2010, retrieved 19 October 2012
Jump up^ The Colossus Rebuild http://www.tnmoc.org/colossus-rebuild-story
Jump up^ Randell, Brian; Fensom, Harry; Milne, Frank A. (15
March 1995), "Obituary: Allen Coombs", The Independent, retrieved 18
October 2012
Jump up^ Fensom, Jim (8 November 2010), Harry Fensom
obituary, retrieved 17 October 2012
Jump up^ John Presper Eckert Jr. and John W. Mauchly,
Electronic Numerical Integrator and Computer, United States Patent Office, US
Patent 3,120,606, filed 26 June 1947, issued 4 February 1964, and invalidated
19 October 1973 after court ruling onHoneywell v. Sperry Rand.
Jump up^ Generations of Computers
Jump up^ Enticknap, Nicholas (Summer 1998),
"Computing's Golden Jubilee", Resurrection (The Computer Conservation
Society) (20), ISSN 0958-7403, retrieved 19 April 2008
Jump up^ "Early computers at Manchester
University", Resurrection(The Computer Conservation Society) 1 (4), Summer
1992,ISSN 0958-7403, retrieved 7 July 2010
Jump up^ Early Electronic Computers (1946–51), University of
Manchester, retrieved 16 November 2008
Jump up^ Napper, R. B. E., Introduction to the Mark 1, The
University of Manchester, retrieved 4 November 2008
Jump up^ Computer Conservation Society, Our Computer
Heritage Pilot Study: Deliveries of Ferranti Mark I and Mark I Star computers.,
retrieved 9 January 2010
Jump up^ Lavington, Simon. "A brief history of British
computers: the first 25 years (1948–1973).". British Computer Society.
Retrieved 10 January 2010.
Jump up^ Lavington, Simon (1998), A History of Manchester
Computers(2 ed.), Swindon: The British Computer Society, pp. 34–35
Jump up^ Cooke-Yarborough, E. H. (June 1998), "Some
early transistor applications in the UK", Engineering and Science
Education Journal (IEE) 7 (3): 100–106, doi:10.1049/esej:19980301,ISSN
0963-7346, retrieved 7 June 2009 (subscription required)
Jump up^ Cooke-Yarborough, E.H. (1957). Introduction to
Transistor Circuits. Edinburgh: Oliver and Boyd. p. 139.
Jump up^ Cooke-Yarborough, E.H. (June 1998). "Some
early transistor applications in the UK". Engineering and Science
Education Journal (London, UK: IEE) 7 (3): 100–106.doi:10.1049/esej:19980301.
ISSN 0963-7346. Retrieved 2009-06-07.
Jump up^ "The Hapless Tale of Geoffrey Dummer",
(n.d.), (HTML),Electronic Product News, accessed 8 July 2008.
Jump up^ Kilby, Jack (2000), Nobel lecture, Stockholm: Nobel
Foundation, retrieved 2008-05-15
Jump up^ The Chip that Jack Built, (c. 2008), (HTML), Texas
Instruments, Retrieved 29 May 2008.
Jump up^ Jack S. Kilby, Miniaturized Electronic Circuits,
United States Patent Office, US Patent 3,138,743, filed 6 February 1959, issued
23 June 1964.
Jump up^ Winston, Brian (1998). Media Technology and
Society: A History : From the Telegraph to the Internet. Routledge. p. 221.
ISBN 978-0-415-14230-4.
Jump up^ Robert Noyce's Unitary circuit, US patent 2981877,
"Semiconductor device-and-lead structure", issued 1961-04-25,
assigned to Fairchild Semiconductor Corporation
Jump up^ Intel_4004 (November 1971), Intel's First
Microprocessor—the Intel 4004, Intel Corp., retrieved 2008-05-17
Jump up^ The Intel 4004 (1971) die was 12 mm2, composed of
2300 transistors; by comparison, the Pentium Pro was 306 mm2, composed of 5.5
million transistors, according to Patterson, David; Hennessy, John (1998),
Computer Organization and Design, San Francisco: Morgan Kaufmann, pp. 27–39,
ISBN 1-55860-428-6
Jump up^ This program was written similarly to those for the
PDP-11minicomputer and shows some typical things a computer can do. All the
text after the semicolons are comments for the benefit of human readers. These
have no significance to the computer and are ignored. (Digital Equipment
Corporation 1972)
Jump up^ It is not universally true that bugs are solely due
to programmer oversight. Computer hardware may fail or may itself have a
fundamental problem that produces unexpected results in certain situations. For
instance, the Pentium FDIV bugcaused some Intel microprocessors in the early
1990s to produce inaccurate results for certain floating point division
operations. This was caused by a flaw in the microprocessor design and resulted
in a partial recall of the affected devices.
Jump up^ Taylor, Alexander L., III (16 April 1984).
"The Wizard Inside the Machine". TIME. Retrieved 17 February 2007.
(subscription required)
Jump up^ Even some later computers were commonly programmed
directly in machine code. Some minicomputers like the DECPDP-8 could be
programmed directly from a panel of switches. However, this method was usually
used only as part of thebooting process. Most modern computers boot entirely
automatically by reading a boot program from some non-volatile memory.
Jump up^ However, there is sometimes some form of machine
language compatibility between different computers. An x86-64compatible
microprocessor like the AMD Athlon 64 is able to run most of the same programs
that an Intel Core 2 microprocessor can, as well as programs designed for
earlier microprocessors like the Intel Pentiums and Intel 80486. This contrasts
with very early commercial computers, which were often one-of-a-kind and
totally incompatible with other computers.
Jump up^ High level languages are also often interpreted
rather than compiled. Interpreted languages are translated into machine code on
the fly, while running, by another program called aninterpreter.
Jump up^ The control unit's role in interpreting instructions
has varied somewhat in the past. Although the control unit is solely
responsible for instruction interpretation in most modern computers, this is
not always the case. Many computers include some instructions that may only be
partially interpreted by the control system and partially interpreted by
another device. This is especially the case with specialized computing hardware
that may be partially self-contained. For example, EDVAC, one of the earliest
stored-program computers, used a central control unit that only interpreted
four instructions. All of the arithmetic-related instructions were passed on to
its arithmetic unit and further decoded there.
Jump up^ Instructions often occupy more than one memory
address, therefore the program counter usually increases by the number of
memory locations required to store one instruction.
Jump up^ David J. Eck (2000). The Most Complex Machine: A
Survey of Computers and Computing. A K Peters, Ltd. p. 54. ISBN
978-1-56881-128-4.
Jump up^ Erricos John Kontoghiorghes (2006). Handbook of
Parallel Computing and Statistics. CRC Press. p. 45. ISBN 978-0-8247-4067-2.
Jump up^ Flash memory also may only be rewritten a limited
number of times before wearing out, making it less useful for heavy random
access usage. (Verma & Mielke 1988)
Jump up^ Donald Eadie (1968). Introduction to the Basic
Computer. Prentice-Hall. p. 12.
Jump up^ Arpad Barna; Dan I. Porat (1976). Introduction to
Microcomputers and the Microprocessors. Wiley. p. 85.ISBN 978-0-471-05051-3.
Jump up^ Jerry Peek; Grace Todino, John Strang (2002).
Learning the UNIX Operating System: A Concise Guide for the New User. O'Reilly.
p. 130. ISBN 978-0-596-00261-9.
Jump up^ Gillian M. Davis (2002). Noise Reduction in Speech
Applications. CRC Press. p. 111. ISBN 978-0-8493-0949-6.
Jump up^ However, it is also very common to construct
supercomputers out of many pieces of cheap commodity hardware; usually
individual computers connected by networks. These so-calledcomputer clusters
can often provide supercomputer performance at a much lower cost than
customized designs. While custom architectures are still used for most of the
most powerful supercomputers, there has been a proliferation of cluster
computers in recent years. (TOP500 2006)
Jump up^ Agatha C. Hughes (2000). Systems, Experts, and
Computers.MIT Press. p. 161. ISBN 978-0-262-08285-3. "The experience of
SAGE helped make possible the first truly large-scale commercial real-time
network: the SABRE computerized airline reservations system..."
Jump up^ "A Brief History of the Internet".
Internet Society. Retrieved 20 September 2008.
Jump up^ "Computer architecture: fundamentals and
principles of computer design" by Joseph D. Dumas 2006. page 340.
Jump up^ According to the Shorter Oxford English Dictionary
(6th ed, 2007), the word computer dates back to the mid 17th century, when it
referred to “A person who makes calculations; specifically a person employed
for this in an observatory etc.”
Jump up^ "Definition of computer".
Thefreedictionary.com. Retrieved 29 January 2012.
Jump up^ Most major 64-bit instruction set architectures are
extensions of earlier designs. All of the architectures listed in this table,
except for Alpha, existed in 32-bit forms before their 64-bit incarnations were
introduced.
Jump up^ Andrew R Hickey (May 15, 2008). "'Crazy' Ant
Invasion Frying Computer Equipment".
References
Fuegi, J. and Francis, J. "Lovelace & Babbage and
the creation of the 1843 'notes'". IEEE Annals of the History of Computing
25 No. 4 (October–December 2003): Digital Object Identifier[dead link]
a Kempf, Karl (1961). Historical Monograph: Electronic
Computers Within the Ordnance Corps. Aberdeen Proving Ground (United States
Army).
a Phillips, Tony (2000). "The Antikythera Mechanism
I". American Mathematical Society. Retrieved 5 April 2006.
a Shannon, Claude Elwood (1940). A symbolic analysis of
relay and switching circuits. Massachusetts Institute of Technology.
Digital Equipment Corporation (1972). PDP-11/40 Processor
Handbook (PDF). Maynard, MA: Digital Equipment Corporation.
Verma, G.; Mielke, N. (1988). Reliability performance of
ETOX based flash memories. IEEE International Reliability Physics Symposium.
Doron D. Swade (February 1993). Redeeming Charles Babbage's
Mechanical Computer. Scientific American. p. 89.
Meuer, Hans; Strohmaier, Erich; Simon, Horst; Dongarra, Jack
(13 November 2006). "Architectures Share Over Time". TOP500.
Retrieved 27 November 2006.
Lavington, Simon (1998). A History of Manchester Computers
(2 ed.). Swindon: The British Computer Society. ISBN 978-0-902505-01-8.
Stokes, Jon (2007). Inside the Machine: An Illustrated
Introduction to Microprocessors and Computer Architecture. San Francisco: No
Starch Press. ISBN 978-1-59327-104-6.
Zuse, Konrad (1993). The Computer - My life. Berlin:
Pringler-Verlag. ISBN 0-387-56453-5.
Felt, Dorr E. (1916). Mechanical arithmetic, or The history
of the counting machine. Chicago: Washington Institute.
Ifrah, Georges (2001). The Universal History of Computing:
From the Abacus to the Quantum Computer. New York: John Wiley & Sons. ISBN
0-471-39671-0.
Berkeley, Edmund (1949). Giant Brains, or Machines That
Think. John Wiley & Sons.
Cohen, Bernard (2000). Howard Aiken, Portrait of a computer
pioneer. Cambridge, Massachusetts: The MIT Press. ISBN 978-0-2625317-9-5.
Ligonnière, Robert (1987). Préhistoire et Histoire des
ordinateurs. Paris: Robert Laffont. ISBN 9-782221-052617.
Couffignal, Louis (1933). Les machines à calculer ; leurs
principes, leur évolution. Paris: Gauthier-Villars.
Essinger, James (2004). Jacquard's Web, How a hand loom led
to the birth of the information age. Oxford University Press. ISBN
0-19-280577-0.
Hyman, Anthony (1985). Charles Babbage: Pioneer of the
Computer. Princeton University Press. ISBN 978-0-6910237-7-9.
Cohen, Bernard (2000). Howard Aiken, Portrait of a computer
pioneer. Cambridge, Massachusetts: The MIT Press. ISBN 978-0-2625317-9-5.
Bowden, B. V. (1953). Faster than thought. New York,
Toronto, London: Pitman publishing corporation.
Moseley, Maboth (1964). Irascible Genius, Charles Babbage,
inventor. London: Hutchinson.
Collier, Bruce (1970). The little engine that could've: The
calculating machines of Charles Babbage. Garland Publishing Inc. ISBN
0-8240-0043-9.
Randell, Brian (1982). "From Analytical Engine to
Electronic Digital Computer: The Contributions of Ludgate, Torres, and
Bush". Retrieved 29 October 2013.
External links
Find more about Computer at Wikipedia'ssister projects
Definitions
and translations from Wiktionary
Media
from Commons
Quotations
from Wikiquote
Source
texts from Wikisource
Textbooks
from Wikibooks
Learning
resources from Wikiversity
A Brief History of Computing [dead link] – slideshow by Life
magazine
[hide]vte
Computer sizes
Classes of computers
Larger
SuperMinisuperMainframe
Mini
Midrange
SuperminiServer
Micro
Personal WorkstationDesktopHomeSFF NettopPlugPortableVideo
game arcade cabinet Arcade system boardVideo game console
MicroconsoleInteractive kioskSmart TV
Mobile
Laptop
Desktop replacement computerSubnotebook
NetbookSmartbookUltrabook
Tablet computer
Ultra-mobile PCMobile Internet device Internet tablet
Information appliance
Handheld PC Palm-size PCPocket computerPDA Electronic
organizerEDAMobile phone Feature phoneSmartphone PhabletPMP DAPE-book readerHandheld
game consolePortable/Mobile data terminal
Calculators
ScientificProgrammableGraphing
Wearable computer
Digital Wristwatch Calculator watchSmartwatch Watch
phoneVirtual retinal displayHead-mounted displayHead-up display
Others
MicrocontrollerNanocomputerPizza box form factorSingle-board
computerSmartdustWireless sensor network