A computer is a
general-purpose device that can be programmedto carry out a
set of arithmetic or logical operations
automatically. 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 ofmemory.
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.Mechanical analog computers started
appearing in the first century and were later used in the medieval era for
astronomical calculations. In World War II, mechanical
analog computers were used for specialized military applications such as
calculating torpedo aiming. 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] Computers are small
enough to fit into mobile
devices, and mobile computers can
be powered by small batteries.
Personal computers in their various forms are icons of the Information Age and
are what most people consider as “computers.” However, the embedded computers found
in many devices from MP3
players to fighter aircraft and
from electronic toys to industrial robots are
the most numerous.
Contents [hide] ·
1 Etymology ·
2 History o 2.1 Pre-twentieth century o 2.2 First general-purpose computing device o 2.3 Later Analog computers o 2.4 The digital computer age begins § 2.4.1 The first electromechanical computers § 2.4.2 The introduction of digital electronic programmable computers
with vacuum tubes § 2.4.3 Stored program computers eliminate the need for re-wiring § 2.4.4 Transistors replace vacuum tubes in computers § 2.4.5 Integrated circuits replace transistors o 2.5 Mobile computers become dominant ·
3 Programs o 3.1 Stored program architecture o 3.2 Machine code o 3.3 Programming language § 3.3.1 Low-level languages § 3.3.2 High-level languages/Third Generation Language o 3.4 Fourth Generation Languages o 3.5 Program design o 3.6 Bugs ·
4 Components o 4.1 Control unit o 4.2 Arithmetic logic unit (ALU) o 4.3 Memory o 4.4 Input/output (I/O) o 4.5 Multitasking o 4.6 Multiprocessing o 4.7 Networking and the Internet o 4.8 Computer architecture paradigms ·
5 Misconceptions o 5.1 Unconventional computing ·
6 Future ·
7 Further topics o 7.1 Artificial intelligence o 7.2 Hardware § 7.2.1 History of computing hardware § 7.2.2 Other hardware topics o 7.3 Software o 7.4 Languages o 7.5 Professions and organizations ·
8 See also ·
9 Notes ·
10 References ·
11 External links EtymologyThe first known use of the word
"computer" was 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. 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]HistoryMain
article: History of computing hardwarePre-twentieth
century
The Ishango boneDevices have been used to aid computation for
thousands of years, mostly using one-to-one
correspondence with fingers. The earliest
counting device was probably a form of tally stick. Later record
keeping aids throughout the Fertile Crescent included
calculi (clay spheres, cones, etc.) which represented counts of items, probably
livestock or grains, sealed in hollow unbaked clay containers.[4][5]The use of counting rods is one
example.
Suanpan (the number
represented on this abacus is 6,302,715,408)The abacus was initially
used for arithmetic tasks. What we now call the Roman abacus was used
in Babylonia as early as
2400 BC. Since then, many other forms of reckoning boards or tables have been
invented. In a medieval European counting house, a checkered
cloth would be placed on a table, and markers moved around on it according to
certain rules, as an aid to calculating sums of money.
The ancient Greek-designedAntikythera
mechanism, dating between 150 to 100 BC, is the world's oldest
analog computer.The Antikythera
mechanism is believed to be the earliest mechanical analog
"computer", according to Derek
J. de Solla Price.[6] It was designed to
calculate astronomical positions. It was discovered in 1901 in the Antikythera wreck off
the Greek island ofAntikythera,
between Kythera and Crete, and has been dated to circa 100
BC. Devices of a level of complexity comparable to that of the Antikythera
mechanism would not reappear until a thousand years later.
Many mechanical aids to calculation and
measurement were constructed for astronomical and navigation use. The planisphere was a star chart invented by
Abū Rayhān al-Bīrūnī in the early 11th century.[7] The astrolabe was invented
in theHellenistic
world in either the 1st or 2nd centuries BC and is often
attributed toHipparchus.
A combination of the planisphere and dioptra, the astrolabe was
effectively an analog computer capable of working out several different kinds
of problems in spherical
astronomy. An astrolabe incorporating a mechanical calendarcomputer[8][9] and gear-wheels was invented by Abi Bakr of Isfahan, Persia in 1235.[10] Abū
Rayhān al-Bīrūnī invented the first mechanical geared lunisolar
calendar astrolabe,[11] an early fixed-wired knowledge processing machine[12] with a gear train and
gear-wheels,[13] circa 1000
AD.
The sector,
a calculating instrument used for solving problems in proportion, trigonometry,
multiplication and division, and for various functions, such as squares and cube
roots, was developed in the late 16th century and found application in gunnery,
surveying and navigation.The planimeter was a
manual instrument to calculate the area of a closed figure by tracing over it
with a mechanical linkage.
A slide ruleThe slide rule was
invented around 1620–1630, shortly after the publication of the concept of the logarithm. It is a
hand-operated analog computer for doing multiplication and division. As slide
rule development progressed, added scales provided reciprocals, squares and
square roots, cubes and cube roots, as well astranscendental
functions such as logarithms and exponentials, circular and
hyperbolic trigonometry and other functions.
Aviation is one of the few fields where slide rules are still in widespread use,
particularly for solving time–distance problems in light aircraft. To save
space and for ease of reading, these are typically circular devices rather than
the classic linear slide rule shape. A popular example is theE6B.In the 1770s Pierre
Jaquet-Droz, a Swiss watchmaker, built a mechanical
doll (automata) that could write
holding a quill pen. By switching the number and order of its internal wheels
different letters, and hence different messages, could be produced. In effect,
it could be mechanically "programmed" to read instructions. Along
with two other complex machines, the doll is at the Musée d'Art et d'Histoire
of Neuchâtel, Switzerland, and still
operates.[14]The tide-predicting
machine invented by Sir William Thomson in 1872 was of great utility to
navigation in shallow waters. It used a system of pulleys and wires to
automatically calculate predicted tide levels for a set period at a particular
location.The differential
analyser, a mechanical analog computer designed to solve differential
equations by integration, used
wheel-and-disc mechanisms to perform the integration. In 1876 Lord
Kelvin had already discussed the possible construction of such
calculators, but he had been stymied by the limited output torque of the ball-and-disk
integrators.[15] In a differential
analyzer, the output of one integrator drove the input of the next integrator,
or a graphing output. The torque amplifier was
the advance that allowed these machines to work. Starting in the 1920s, Vannevar Bush and
others developed mechanical differential analyzers.
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",[16]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, anAnalytical 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 integratedmemory, making it the first
design for a general-purpose computer that could be described in modern terms
as Turing-complete.[17][18]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 (the mill) in 1888. He gave a
successful demonstration of its use in computing tables in 1906.Later
Analog computers
Sir William Thomson's third tide-predicting machine design,
1879–81During 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.[19]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.[15]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.By the 1950s the success of digital
electronic computers had spelled the end for most analog computing machines,
but analog computers remain in use in some specialized applications such as
education (control
systems) and aircraft (slide rule).The
digital computer age beginsThe principle of the modern computer was
first described by mathematician and
pioneering computer
scientist Alan Turing,
who set out the idea in his seminal 1936 paper,[20] 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.[21] Turing machines are
to this day a central object of study in theory
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.
The
first electromechanical computersBy 1938 the United
States Navy had developed an electromechanical analog computer
small enough to use aboard asubmarine.
This was the Torpedo
Data Computer, which used trigonometry to solve the problem of
firing a torpedo at a moving target. During World War II similar
devices were developed in other countries as well.
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.[22]In 1941, Zuse followed his earlier machine up
with the Z3,
the world's first workingelectromechanical programmable,
fully automatic digital computer.[23][24] The Z3 was built with
2000 relays, implementing a
22 bit word length that
operated at a clock
frequency of about 5–10 Hz.[25] 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.[26] The Z3 was probably a
complete Turing
machine.
The
introduction of digital electronic programmable computers with vacuum tubesPurely 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 London 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.[19] In the US, John
Vincent Atanasoff and Clifford E. Berry of Iowa State University developed and
tested the Atanasoff–Berry
Computer (ABC) in 1942,[27] the first
"automatic electronic digital computer".[28] This design was also
all-electronic and used about 300 vacuum tubes, with capacitors fixed in a
mechanically rotating drum for memory.[29]
Colossus was the first electronicdigital programmable 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.[29] He spent eleven
months from early February 1943 designing and building the first Colossus.[30] After a functional
test in December 1943, Colossus was shipped to Bletchley Park, where it was
delivered on 18 January 1944[31] and attacked its
first message on 5 February.[29]Colossus was the world's first electronic digital programmable computer.[19] 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.[32][33]
ENIAC was the first Turing-complete
device, and performed ballistics trajectory calculations for the United
States Army.The US-built ENIAC[34] (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 Mauchly and 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.[35]Stored
program computers eliminate the need for re-wiring
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.[29] 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 (aprogram) that details the computation. 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.[19]
Ferranti Mark 1, c. 1951.The Manchester Small-Scale Experimental
Machine, nicknamed Baby, was the world's first stored-program
computer. It was built at the Victoria University of Manchester by Frederic
C. Williams, Tom Kilburn and Geoff Tootill, and ran its
first program on 21 June 1948.[36] It was designed as a testbed for theWilliams tube the
first random-access digital
storage device.[37] 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.[38] 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.[39] Built by Ferranti, it was delivered
to the University
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.[40] 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 [41] and ran the world's
first regular routine office computer job.
Transistors
replace vacuum tubes in computers
A bipolar junction transistorThe 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 Kilburndesigned and
built a machine using the newly developed transistors instead of
valves.[42] Their first transistorised
computer and the first in the world, wasoperational
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 magnetic drum memory, so it was not
the first completely transistorized computer. That distinction goes to the Harwell CADET of 1955,[43] built by the
electronics division of the Atomic Energy Research Establishment at Harwell.[44][45]Integrated
circuits replace transistorsThe 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 in Washington, D.C. on
7 May 1952.[46]The first practical ICs were invented by Jack Kilby at Texas Instruments and Robert Noyce at Fairchild
Semiconductor.[47]Kilby recorded his initial
ideas concerning the integrated circuit in July 1958, successfully
demonstrating the first working integrated example on 12 September 1958.[48] 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.”[49][50]Noyce also came up with his
own idea of an integrated circuit half a year later than Kilby.[51] 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 ofgermanium.
This new development heralded an explosion in
the commercial and personal use of computers and led to the invention of the microprocessor. 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,[52] designed and realized
by Ted Hoff, Federico Faggin, and
Stanley Mazor at Intel.[53]Mobile
computers become dominantWith the continued miniaturization of
computing resources, and advancements in portable battery life, portable computersgrew in
popularity in the 2000s.[54] The same developments
that spurred the growth of laptop computers and other portable computers
allowed manufacturers to integrate computing resources into cellular phones.
These so-called smartphones andtablets run on a
variety of operating systems and have become the dominant computing device on
the market, with manufacturers reporting having shipped an estimated 237
million devices in 2Q 2013.[55]ProgramsThe defining feature of modern computers
which distinguishes them from all other machines is that they can beprogrammed.
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 for word
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 architectureMain
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 Industryin Manchester,
EnglandThis 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. The following example is written in the MIPS
assembly language: begin:
addi $8, $0, 0 # initialize sum to 0 addi $9, $0, 1 # set first number to add = 1 loop:
slti $10, $9, 1000 # check if the number is less than
1000 beq $10, $0, finish # if odd number is greater than n then
exit add $8, $8, $9 # update sum addi $9, $9, 1 # get next number j loop # repeat the summing
process finish:
add $2, $8, $0 # put sum in output registerOnce 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 a
fraction of a second.Machine
codeIn 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[citation
needed], 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,[56] 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'sassembly 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
languageMain
article: Programming
languageProgramming 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 acompiler or an assembler before being run, or translated directly at
run time by aninterpreter.
Sometimes programs are executed by a hybrid method of the two techniques.Low-level
languagesMain
article: Low-level programming languageMachine 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 64computer that
might be in a PC.[57]High-level
languages/Third Generation LanguageMain
article: High-level programming languageThough 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.[58] 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.
Fourth
Generation LanguagesThese 4G languages are less procedural than
3G languages. The benefit of 4GL is thatthat it provides ways to obtain
information without requiring the direct help of a programmer. Example of 4GL
is SQL.Program
design
This
section does not cite any references
or sources. Please help improve this section by adding citations to reliable sources.
Unsourced material may be challenged and removed. (July 2012)
|
The actual first computer
bug, a moth found trapped on a relay of the Harvard Mark II computerErrors 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 mouse clicks 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.[59]Admiral Grace Hopper, an American
computer scientist and developer of the firstcompiler, 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.[60]ComponentsMain
articles: Central
processing unit and Microprocessor
Video demonstrating the
standard components of a "slimline" computerA general purpose computer has four main
components: the arithmetic
logic unit(ALU), the control unit, the memory,
and the input and output devices (collectively termed I/O). These parts are
interconnected by buses,
often made of groups ofwires.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 abit (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, and registers 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
circuitcalled a microprocessor.Control
unitMain
articles: CPU design and Control unit
Diagram showing how a
particularMIPS
architecture instruction would be decoded by the control systemThe 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
control signals that activate other parts of the computer.[61] Control systems in
advanced computers may change the order of execution of some instructions to
improve performance.
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
numbersin 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'soperating
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.[65]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.[66] Devices that provide
input or output to the computer are calledperipherals.[67] 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 and optical
disc drives serve as both input and output devices. Computer
networking is another form of I/O.
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 and multi-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.[70] 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.
Visualization of a portion
of theroutes on the InternetComputers 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.[71]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 the ARPANET.[72] The technologies that
made the Arpanet possible spread and evolved.
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 a hard disk.
While popular usage of the word “computer” is synonymous with a personal
electronic computer, the modern[74] 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.”[75] Any device which processes
information qualifies as a computer, especially if the processing is
purposeful. Even a human is a computer, in this sense.
First generation
(mechanical/electromechanical)
|
Calculators
|
|
Programmable devices
|
||
Second generation (vacuum tubes)
|
Calculators
|
|
Third generation (discrete transistors and
SSI, MSI, LSIintegrated
circuits)
|
||
Fourth generation (VLSI integrated
circuits)
|
Minicomputer
|
|
4-bit microcomputer
|
||
8-bit microcomputer
|
||
16-bit microcomputer
|
||
32-bit microcomputer
|
||
Personal computer
|
||
Theoretical/experimental
|
Input
|
||
Output
|
||
Both
|
||
Short range
|
||
Long range (computer
networking)
|
86-DOS (QDOS), IBM PC DOS, MS-DOS, DR-DOS, FreeDOS
|
||
Experimental
|
||
Programming library
|
||
Microsoft
Windows, GNOME, KDE, QNX Photon, CDE, GEM, Aqua
|
||
Word processing, Desktop
publishing, Presentation
program, Database management system, Scheduling & Time
management, Spreadsheet, Accounting
software
|
||
Internet Access
|
||
Design and manufacturing
|
Computer-aided
design, Computer-aided manufacturing, Plant management, Robotic
manufacturing, Supply chain management
|
|
Educational
|
||
Strategy, Arcade, Puzzle,
Simulation, First-person
shooter, Platform, Massively multiplayer,Interactive
fiction
|
||
Misc
|
Lists of programming languages
|
|
Commonly usedassembly
languages
|
|
Commonly used high-level programming languages
|
|
Commonly usedscripting
languages
|
Bourne script, JavaScript, Python, Ruby, PHP, Perl
|
Hardware-related
|
|
Software-related
|
|
Standards groups
|
|
Professional societies
|
|
Free/open
source software groups
|
|

No comments:
Post a Comment