Computer: This Article May Be Content Into Sub-Articles and Using This Article For A of The Key Points of The Subject
Computer: This Article May Be Content Into Sub-Articles and Using This Article For A of The Key Points of The Subject
"Computer technology" redirects here. For the company, see Computer Technology Limited. For other uses,
see Computer (disambiguation).
This article may be too long to read and navigate comfortably. Please consider splitting
content into sub-articles and using this article for a summary of the key points of the subject.
(June 2009)
A computer is a programmable machine that receives input, stores and manipulates data, and provides output
in a useful format.
Although mechanical examples of computers have existed through much of recorded human history, the first
electronic computers were developed in the mid-20th century (1940–1945). These 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 small pocket devices, and can be
powered by a small battery. 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.
The ability to store and execute lists of instructions called programs makes computers extremely versatile,
distinguishing them from calculators. The Church–Turing thesis is a mathematical statement of this versatility:
any computer with a certain minimum capability is, in principle, capable of performing the same tasks that any
other computer can perform. Therefore computers ranging from a netbook to a supercomputer are all able to
perform the same computational tasks, given enough time and storage capacity.
Contents
[hide]
1 History of computing
o 2.1 Programs
o 2.2 Example
3 Function
o 3.1 Control unit
o 3.2 Arithmetic/logic
unit (ALU)
o 3.3 Memory
o 3.4 Input/output (I/O)
o 3.5 Multitasking
o 3.6 Multiprocessing
o 3.7 Networking and
the Internet
4 Further topics
o 4.1 Hardware
o 4.2 Software
o 4.3 Programming
languages
o 4.4 Professions and
organizations
5 See also
6 Notes
7 References
8 External links
History of computing
The Jacquard loom, on display at theMuseum of Science and Industry in Manchester, England, was one of the first
programmable devices.
The first use of the word "computer" was recorded in 1613, referring to a person who carried out calculations,
or computations, and the word continued to be used in that sense until the middle of the 20th century. From the
end of the 19th century onwards though, the word began to take on its more familiar meaning, describing a
machine that carries out computations.[3]
The history of the modern computer begins with two separate technologies—automated calculation and
programmability—but no single device can be identified as the earliest computer, partly because of the
inconsistent application of that term. Examples of early mechanical calculating devices include the abacus,
the slide rule and arguably the astrolabeand the Antikythera mechanism (which dates from about 150–100
BC). Hero of Alexandria (c. 10–70 AD) built a mechanical theater which performed a play lasting 10 minutes
and was operated by a complex system of ropes and drums that might be considered to be a means of
deciding which parts of the mechanism performed which actions and when. [4] This is the essence of
programmability.
It was the fusion of automatic calculation with programmability that produced the first recognizable computers.
In 1837, Charles Babbagewas the first to conceptualize and design a fully programmable mechanical
computer, his analytical engine.[8] Limited finances and Babbage's inability to resist tinkering with the design
meant that the device was never completed.
In the late 1880s, Herman Hollerith invented the recording of data on a machine readable medium. Prior uses
of machine readable media, above, had been for control, not data. "After some initial trials with paper tape, he
settled on punched cards ..."[9] To process these punched cards he invented the tabulator, and
the keypunch machines. These three inventions were the foundation of the modern information processing
industry. Large-scale automated data processing of punched cards was performed for the 1890 United States
Census by Hollerith's company, which later became the core of IBM. By the end of the 19th century a number
of technologies that would later prove useful in the realization of practical computers had begun to appear:
the punched card, Boolean algebra, the vacuum tube(thermionic valve) and the teleprinter.
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.
Alan Turing is widely regarded to be the father of modern computer science. In 1936 Turing provided an
influential formalisation of the concept of the algorithm and computation with the Turing machine. Of his role in
the modern computer, Time magazine in naming Turing one of the 100 most influential people of the 20th
century, states: "The fact remains that everyone who taps at a keyboard, opening a spreadsheet or a word-
processing program, is working on an incarnation of a Turing machine". [10]
The inventor of the program-controlled computer was Konrad Zuse, who built the first working computer in
1941 and later in 1955 the first computer based on magnetic storage. [11]
George Stibitz is internationally recognized as a father of the modern digital computer. While working at Bell
Labs in November 1937, Stibitz invented and built a relay-based calculator he dubbed the "Model K" (for
"kitchen table", on which he had assembled it), which was the first to use binary circuits to perform an
arithmetic operation. Later models added greater sophistication including complex arithmetic and
programmability.[12]
Defining characteristics of some early digital computers of the 1940s (In the history of computing hardware)
Program-controlled by
Binaryfloating Electro-
Zuse Z3 (Germany) May 1941 punched film stock (but no Yes (1998)
point mechanical
conditional branch)
Program-controlled by 24-
Harvard Mark I – IBM Electro-
May 1944 Decimal channel punched paper tape (but No
ASCC (US) mechanical
no conditional branch)
Program-controlled by patch
Colossus Mark 2 (UK) June 1944 Binary Electronic No
cables and switches
Program-controlled by patch
ENIAC (US) July 1946 Decimal Electronic Yes
cables and switches
Manchester Small-
Stored-program in Williams
Scale Experimental June 1948 Binary Electronic Yes
cathode ray tube memory
Machine(Baby) (UK)
Program-controlled by patch
cables and switches plus a
September primitive read-only stored
Modified ENIAC (US) Decimal Electronic Yes
1948 programming mechanism using
the Function Tables as
program ROM
Stored-program in mercury delay
EDSAC (UK) May 1949 Binary Electronic Yes
line memory
Stored-program in Williams
Manchester Mark October
Binary Electronic cathode ray tube memory Yes
1 (UK) 1949
andmagnetic drum memory
A succession of steadily more powerful and flexible computing devices were constructed in the 1930s and
1940s, gradually adding the key features that are seen in modern computers. The use of digital electronics
(largely invented by Claude Shannon in 1937) and more flexible programmability were vitally important steps,
but defining one point along this road as "the first digital electronic computer" is difficult. Shannon 1940 Notable
achievements include:
EDSAC was one of the first computers to implement the stored program (von Neumann) architecture.
Die of an Intel 80486DX2microprocessor (actual size: 12×6.75 mm) in its packaging.
Several developers of ENIAC, recognizing its flaws, came up with a far more flexible and elegant design, which
came to be known as the "stored program architecture" or von Neumann architecture. This design was first
formally described by John von Neumann in the paper First Draft of a Report on the EDVAC, distributed in
1945. A number of projects to develop computers based on the stored-program architecture commenced
around this time, the first of these being completed in Great Britain. The first working prototype to be
demonstrated was the Manchester Small-Scale Experimental Machine (SSEM or "Baby") in 1948.
The Electronic Delay Storage Automatic Calculator (EDSAC), completed a year after the SSEM at Cambridge
University, was the first practical, non-experimental implementation of the stored program design and was put
to use immediately for research work at the university. Shortly thereafter, the machine originally described by
von Neumann's paper—EDVAC—was completed but did not see full-time use for an additional two years.
Nearly all modern computers implement some form of the stored-program architecture, making it the single trait
by which the word "computer" is now defined. While the technologies used in computers have changed
dramatically since the first electronic, general-purpose computers of the 1940s, most still use the von Neumann
architecture.
Computers using vacuum tubes as their electronic elements were in use throughout the 1950s, but by the
1960s had been largely replaced by transistor-based machines, which were smaller, faster, cheaper to
produce, required less power, and were more reliable. The first transistorised computer was demonstrated at
the University of Manchester in 1953.[15] In the 1970s, integrated circuit technology and the subsequent creation
of microprocessors, such as the Intel 4004, further decreased size and cost and further increased speed and
reliability of computers. By the late 1970s, many products such as video recorders contained dedicated
computers calledmicrocontrollers, and they started to appear as a replacement to mechanical controls in
domestic appliances such as washing machines. The 1980s witnessed home computers and the now
ubiquitous personal computer. With the evolution of the Internet, personal computers are becoming as common
as the television and the telephone in the household[citation needed].
Modern smartphones are fully programmable computers in their own right, and as of 2009 may well be the
most common form of such computers in existence[citation needed].
The defining feature of modern computers which distinguishes them from all other machines is that they can
be programmed. That is to say that a list of instructions (the program) can be given to the computer and it will
store them and carry them out at some time in the future.
In most cases, computer instructions are simple: add one number to another, move some data from one
location to another, send a message to some external device, etc. 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:
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.[16]
However, computers cannot "think" for themselves in the sense that they only solve problems in exactly the
way they are programmed to. An intelligent human faced with the above addition task might soon realize that
instead of actually adding up all the numbers one can simply use the equation
and arrive at the correct answer (500,500) with little work. [17] In other words, a computer programmed to
add up the numbers one by one as in the example above would do exactly that without regard to
efficiency or alternative solutions.
Programs
A 1970s punched card containing one line from aFORTRAN program. The card reads: "Z(1) = Y + W(1)" and is
labelled "PROJ039" for identification purposes.
In practical terms, a computer program may be just a few instructions or extend to many millions of
instructions, as do the programs for word processors andweb 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.
Errors in computer programs are called "bugs". Bugs 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 to "hang"—become
unresponsive to input such as mouse clicks or keystrokes, or to completely fail or "crash". Otherwise
benign bugs may sometimes may 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. [18]
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,[19] 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. 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 aPDA 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.[20]
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 acompiler.[21] 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 variousvideo game consoles.
Calculator
From Wikipedia, the free encyclopedia
A scientific calculator
A newer graphing calculator
A calculator is a small (often pocket-sized), usually inexpensive electronic device used to perform the basic
operations of arithmetic. Modern calculators are more portable than mostcomputers, though most PDAs are
comparable in size to handheld calculators.
The calculator has its history in mechanical devices such as the abacus and slide rule. In the past, mechanical
clerical aids such as abaci, comptometers, Napier's bones, books ofmathematical tables, slide rules, or
mechanical adding machines were used for numeric work. This semi-manual process of calculation was
tedious and error-prone. The first digital mechanical calculator was invented in 1623 and the first commercially
successful device was produced in 1820. The 19th and early 20th centuries saw improvements to the
mechnical design, in parallel with analog computers; the first digital electronic calculators were created in the
1960s, with pocket-sized devices becoming available in the 1970s.
Modern calculators are electrically powered (usually by battery and/or solar cell) and vary from cheap, give-
away, credit-card sized models to sturdy adding machine-like models with built-in printers. They first became
popular in the late 1960s as decreasing size and cost of electronics made possible devices for calculations,
avoiding the use of scarce and expensive computer resources. By the 1980s, calculator prices had reduced to
a point where a basic calculator was affordable to most. By the 1990s they had become common in math
classes in schools, with the idea that students could be freed from basic calculations and focus on the
concepts.
Computer operating systems as far back as early Unix have included interactive calculator programs such
as dc and hoc, and calculator functions are included in almost all PDA-typedevices (save a few dedicated
address book and dictionary devices).
In addition to general purpose calculators, there are those designed for specific markets; for example, there
are scientific calculators which focus on operations slightly more complex than those specific to arithmetic - for
instance, trigonometric and statistical calculations. Some calculators even have the ability to do computer
algebra. Graphing calculators can be used to graph functions defined on the real line, or higher
dimensional Euclidean space. They often serve other purposes, however.
Contents
[hide]
1 Design
3 History
3.4.1 Machines in production
o 3.5 1900s to 1960s
zenith
calculators
o 3.6 1970s to mid-1980s
3.6.1 Pocket calculators
3.6.2 Programmable calculators
3.6.3 Mechanical calculators
3.6.4 Technical improvements
o 3.7 Mid-1980s to present
4 See also
5 Notes
6 References
7 Further reading
8 External links
[edit]Design
Most calculators contain the following buttons: 1,2,3,4,5,6,7,8,9,0,+,-,×,÷ (/),.,=,%, and ± (+/-). Some even
contain 00 and 000 buttons to make larger calculations easier to compute.
Some fractions such as 2⁄3 are awkward to display on a calculator display as they are usually rounded
to 0.66666667. Also, some fractions such as 1⁄7 which is 0.14285714285714 (to fourteen significant
figures) can be difficult to recognize in decimal form; as a result, many scientific calculators are able to work
in vulgar fractions and/or mixed numbers.
In most countries, students use calculators for schoolwork. There was some initial resistance to the idea out of
fear that basic arithmetic skills would suffer. There remains disagreement about the importance of the ability to
perform calculations "in the head", with some curricula restricting calculator use until a certain level of
proficiency has been obtained, while others concentrate more on teaching estimation techniques and problem-
solving. Research suggests that inadequate guidance in the use of calculating tools can restrict the kind of
mathematical thinking that students engage in.[1] Others have argued that calculator use can even cause core
mathematical skills to atrophy, or that such use can prevent understanding of advanced algebraic concepts.
[edit]Calculators versus computers
This section does not cite any references or sources.
Please help improve this article by adding citations to reliable sources. Unsourced material may
be challenged andremoved. (March 2009)
The fundamental difference between calculators and computers is that computers can be programmed to
perform different tasks while calculators are pre-designed with specific functions built in, for example addition,
multiplication, logarithms, etc. While computers may be used to handle numbers, they can also manipulate
words, images or sounds and other tasks they have been programmed to handle. However, the distinction
between the two is quite blurred; some calculators have built-in programming functions, ranging from simple
formula entry to full programming languages such as RPL or TI-BASIC. Graphing calculators in particular can,
along with PDAs, be viewed as direct descendants of the 1980s pocket computers, essentially calculators with
full keyboards and programming capability.
The market for calculators is extremely price-sensitive, to an even greater extent than the personal computer
market; typically the user desires the least expensive model having a specific feature set, but does not care
much about speed (since speed is constrained by how fast the user can press the buttons). Thus designers of
calculators strive to minimize the number of logic elements on the chip, not the number of clock cycles needed
to do a computation.
For instance, instead of a hardware multiplier, a calculator might implement floating point mathematics with
code in ROM, and compute trigonometric functions with the CORDIC algorithm because CORDIC does not
require hardware floating-point. Bit serial logic designs are more common in calculators whereas bit
parallel designs dominate general-purpose computers, because a bit serial design minimizes
the languages chip complexity, but takes many more clock cycles. (Again, the line blurs with high-end
calculators, which use processor chips associated with computer and embedded systems design, particularly
the Z80, MC68000, and ARM architectures, as well as some custom designs specifically made for the
calculator market.)