Computer, machine that performs tasks, such as calculations or electronic communication, under the control of a set of instructions called a program. Programs usually reside within the computer and are retrieved and processed by the computer’s electronics. The program results are stored or routed to output devices, such as video display monitors or printers. Computers perform a wide variety of activities reliably, accurately, and quickly.
Babbage’s Difference Engine
Considered by many to be a direct forerunner of the modern computer, the Difference Engine was able to compute mathematical tables. This woodcut shows a small portion of the ingenious machine, which was designed by Charles Babbage in the 1820s. Although the device did not have a memory, Babbage’s later idea for the Analytical Engine would have been a true, programmable computer if the technology of his time had been able to build it.
II. USES OF COMPUTERS
People use computers in many ways. In business, computers track inventories with bar codes and scanners, check the credit status of customers, and transfer funds electronically. In homes, tiny computers embedded in the electronic circuitry of most appliances control the indoor temperature, operate home security systems, tell the time, and turn videocassette recorders (VCRs) on and off. Computers in automobiles regulate the flow of fuel, thereby increasing gas mileage, and are used in anti-theft systems. Computers also entertain, creating digitized sound on stereo systems or computer-animated features from a digitally encoded laser disc. Computer programs, or applications, exist to aid every level of education, from programs that teach simple addition or sentence construction to programs that teach advanced calculus. Educators use computers to track grades and communicate with students; with computer-controlled projection units, they can add graphics, sound, and animation to their communications (see Computer-Aided Instruction). Computers are used extensively in scientific research to solve mathematical problems, investigate complicated data, or model systems that are too costly or impractical to build, such as testing the air flow around the next generation of aircraft. The military employs computers in sophisticated communications to encode and unscramble messages, and to keep track of personnel and supplies.
III. HOW COMPUTERS WORK
A typical computer system consists of a central processing unit (CPU), input devices, storage devices, and output devices. The CPU consists of an arithmetic/logic unit, registers, control section, and internal bus. The arithmetic/logic unit carries out arithmetical and logical operations. The registers store data and keep track of operations. The control unit regulates and controls various operations. The internal bus connects the units of the CPU with each other and with external components of the system. For most computers, the principal input devices are a keyboard and a mouse. Storage devices include hard disks, CD-ROM drives, and random access memory (RAM) chips. Output devices that display data include monitors and printers.
The physical computer and its components are known as hardware. Computer hardware includes the memory that stores data and program instructions; the central processing unit (CPU) that carries out program instructions; the input devices, such as a keyboard or mouse, that allow the user to communicate with the computer; the output devices, such as printers and video display monitors, that enable the computer to present information to the user; and buses (hardware lines or wires) that connect these and other computer components. The programs that run the computer are called software. Software generally is designed to perform a particular type of task—for example, to control the arm of a robot to weld a car’s body, to write a letter, to display and modify a photograph, or to direct the general operation of the computer.
a) The Operating System
When a computer is turned on it searches for instructions in its memory. These instructions tell the computer how to start up. Usually, one of the first sets of these instructions is a special program called the operating system, which is the software that makes the computer work. It prompts the user (or other machines) for input and commands, reports the results of these commands and other operations, stores and manages data, and controls the sequence of the software and hardware actions. When the user requests that a program run, the operating system loads the program in the computer’s memory and runs the program. Popular operating systems, such as Microsoft Windows and the Macintosh system (Mac OS), have graphical user interfaces (GUIs)—that use tiny pictures, or icons, to represent various files and commands. To access these files or commands, the user clicks the mouse on the icon or presses a combination of keys on the keyboard. Some operating systems allow the user to carry out these tasks via voice, touch, or other input methods.
b) Computer Memory
Inside a Computer Hard Drive
The inside of a computer hard disk drive consists of four main components. The round disk platter is usually made of aluminum, glass, or ceramic and is coated with a magnetic media that contains all the data stored on the hard drive. The yellow armlike device that extends over the disk platter is known as the head arm and is the device that reads the information off of the disk platter. The head arm is attached to the head actuator, which controls the head arm. Not shown is the chassis which encases and holds all the hard disk drive components.
To process information electronically, data are stored in a computer in the form of binary digits, or bits, each having two possible representations (0 or 1). If a second bit is added to a single bit of information, the number of representations is doubled, resulting in four possible combinations: 00, 01, 10, or 11. A third bit added to this two-bit representation again doubles the number of combinations, resulting in eight possibilities: 000, 001, 010, 011, 100, 101, 110, or 111. Each time a bit is added, the number of possible patterns is doubled. Eight bits is called a byte; a byte has 256 possible combinations of 0s and 1s. See also Expanded Memory; Extended Memory.
A byte is a useful quantity in which to store information because it provides enough possible patterns to represent the entire alphabet, in lower and upper cases, as well as numeric digits, punctuation marks, and several character-sized graphics symbols, including non-English characters such as p. A byte also can be interpreted as a pattern that represents a number between 0 and 255. A kilobyte—1,024 bytes—can store about 1,000 characters; a megabyte can store about 1 million characters; a gigabyte can store about 1 billion characters; and a terabyte can store about 1 trillion characters. Computer programmers usually decide how a given byte should be interpreted—that is, as a single character, a character within a string of text, a single number, or part of a larger number. Numbers can represent anything from chemical bonds to dollar figures to colors to sounds.
The physical memory of a computer is either random access memory (RAM), which can be read or changed by the user or computer, or read-only memory (ROM), which can be read by the computer but not altered in any way. One way to store memory is within the circuitry of the computer, usually in tiny computer chips that hold millions of bytes of information. The memory within these computer chips is RAM. Memory also can be stored outside the circuitry of the computer on external storage devices, such as magnetic floppy disks, which can store about 2 megabytes of information; hard drives, which can store gigabytes of information; compact discs (CDs), which can store up to 680 megabytes of information; and digital video discs (DVDs), which can store 8.5 gigabytes of information. A single CD can store nearly as much information as several hundred floppy disks, and some DVDs can hold more than 12 times as much data as a CD.
c) The Bus
The bus enables the components in a computer, such as the CPU and the memory circuits, to communicate as program instructions are being carried out. The bus is usually a flat cable with numerous parallel wires. Each wire can carry one bit, so the bus can transmit many bits along the cable at the same time. For example, a 16-bit bus, with 16 parallel wires, allows the simultaneous transmission of 16 bits (2 bytes) of information from one component to another. Early computer designs utilized a single or very few buses. Modern designs typically use many buses, some of them specialized to carry particular forms of data, such as graphics.
d) Input Devices
Light pens are electronic pointers that allow users to modify designs on-screen. The hand-held pointer contains sensors that send signals to the computer whenever light is recorded. The computer’s screen is not lit up all at once, but traced row-by-row by an electron beam sixty times every second. Because of this, the computer is able to determine the pen’s position by noting exactly when the pen detects the electron beam passing its tip. Light pens are often used in computer-aided design and computer-aided manufacture (CAD and CAM) technology because of the flexibility they provide. Here, an engineer uses a light pen to modify a technical drawing on a computer display screen.
Input devices, such as a keyboard or mouse, permit the computer user to communicate with the computer. Other input devices include a joystick, a rodlike device often used by people who play computer games; a scanner, which converts images such as photographs into digital images that the computer can manipulate; a touch panel, which senses the placement of a user’s finger and can be used to execute commands or access files; and a microphone, used to input sounds such as the human voice which can activate computer commands in conjunction with voice recognition software. In recent years, “Tablet” computers were also developed that will allow users to interact with their screens using a penlike device.
e) The Central Processing Unit
Information from an input device or from the computer’s memory is communicated via the bus to the central processing unit (CPU), which is the part of the computer that translates commands and runs programs. The CPU is a microprocessor chip—that is, a single piece of silicon containing millions of tiny, microscopically wired electrical components. Information is stored in a CPU memory location called a register. Registers can be thought of as the CPU’s tiny scratchpad, temporarily storing instructions or data. When a program is running, one special register called the program counter keeps track of which program instruction comes next by maintaining the memory location of the next program instruction to be executed. The CPU’s control unit coordinates and times the CPU’s functions, and it uses the program counter to locate and retrieve the next instruction from memory.
In a typical sequence, the CPU locates the next instruction in the appropriate memory device. The instruction then travels along the bus from the computer’s memory to the CPU, where it is stored in a special instruction register. Meanwhile, the program counter changes—usually increasing a small amount—so that it contains the location of the instruction that will be executed next. The current instruction is analyzed by a decoder, which determines what the instruction will do. Any data the instruction needs are retrieved via the bus and placed in the CPU’s registers. The CPU executes the instruction, and the results are stored in another register or copied to specific memory locations via a bus. This entire sequence of steps is called an instruction cycle. Frequently, several instructions may be in process simultaneously, each at a different stage in its instruction cycle. This is called pipeline processing.
f) Output Devices
Once the CPU has executed the program instruction, the program may request that the information be communicated to an output device, such as a video display monitor or a flat liquid crystal display. Other output devices are printers, overhead projectors, videocassette recorders (VCRs), and speakers. See also Input/Output Devices.
IV. PROGRAMMING LANGUAGES
Programming languages contain the series of commands that create software. A CPU has a limited set of instructions known as machine code that it is capable of understanding. The CPU can understand only this language. All other programming languages must be converted to machine code for them to be understood. Computer programmers, however, prefer to use other computer languages that use words or other commands because they are easier to use. These other languages are slower because the language must be translated first so that the computer can understand it. The translation can lead to code that may be less efficient to run than code written directly in the machine’s language.
a) Machine Language
Computer programs that can be run by a computer’s operating system are called executables. An executable program is a sequence of extremely simple instructions known as machine code. These instructions are specific to the individual computer’s CPU and associated hardware; for example, Intel Pentium and Power PC microprocessor chips each have different machine languages and require different sets of codes to perform the same task. Machine code instructions are few in number (roughly 20 to 200, depending on the computer and the CPU). Typical instructions are for copying data from a memory location or for adding the contents of two memory locations (usually registers in the CPU). Complex tasks require a sequence of these simple instructions. Machine code instructions are binary—that is, sequences of bits (0s and 1s). Because these sequences are long strings of 0s and 1s and are usually not easy to understand, computer instructions usually are not written in machine code. Instead, computer programmers write code in languages known as an assembly language or a high-level language.
b) Assembly Language
Assembly language uses easy-to-remember commands that are more understandable to programmers than machine-language commands. Each machine language instruction has an equivalent command in assembly language. For example, in one Intel assembly language, the statement “MOV A, B” instructs the computer to copy data from location A to location B. The same instruction in machine code is a string of 16 0s and 1s. Once an assembly-language program is written, it is converted to a machine-language program by another program called an assembler.Assembly language is fast and powerful because of its correspondence with machine language. It is still difficult to use, however, because assembly-language instructions are a series of abstract codes and each instruction carries out a relatively simple task. In addition, different CPUs use different machine languages and therefore require different programs and different assembly languages. Assembly language is sometimes inserted into a high-level language program to carry out specific hardware tasks or to speed up parts of the high-level program that are executed frequently.
c) High-Level Languages
High-level languages were developed because of the difficulty of programming using assembly languages. High-level languages are easier to use than machine and assembly languages because their commands are closer to natural human language. In addition, these languages are not CPU-specific. Instead, they contain general commands that work on different CPUs. For example, a programmer writing in the high-level C++ programming language who wants to display a greeting need include only the following command:
cout << ‘Hello World!’ << endl;
This command directs the computer’s CPU to display the greeting, and it will work no matter what type of CPU the computer uses. When this statement is executed, the text that appears between the quotes will be displayed. Although the “cout” and “endl” parts of the above statement appear cryptic, programmers quickly become accustomed to their meanings. For example, “cout” sends the greeting message to the “standard output” (usually the computer user’s screen) and “endl” is how to tell the computer (when using the C++ language) to go to a new line after it outputs the message. Like assembly-language instructions, high-level languages also must be translated. This is the task of a special program called a compiler. A compiler turns a high-level program into a CPU-specific machine language. For example, a programmer may write a program in a high-level language such as C++ or Java and then prepare it for different machines, such as a Sun Microsystems work station or a personal computer (PC), using compilers designed for those machines. This simplifies the programmer’s task and makes the software more portable to different users and machines.
American naval officer and mathematician Grace Murray Hopper helped develop the first commercially available high-level software language, FLOW-MATIC, in 1957. Hopper is credited for inventing the term bug, which indicates a computer malfunction; in 1945 she discovered a hardware failure in the Mark II computer caused by a moth trapped between its mechanical relays. She documented the event in her laboratory notebook, and the term eventually came to represent any computer error, including one based strictly on incorrect instructions in software. Hopper taped the moth into her notebook and wrote, “First actual case of a bug being found.”
From 1954 to 1958 American computer scientist John Backus of International Business Machines, Inc. (IBM) developed Fortran, an acronym for Formula Translation. It became a standard programming language because it could process mathematical formulas. Fortran and its variations are still in use today, especially in physics.
Hungarian-American mathematician John Kemeny and American mathematician Thomas Kurtz at Dartmouth College in Hanover, New Hampshire, developed BASIC (Beginner’s All-purpose Symbolic Instruction Code) in 1964. The language was easier to learn than its predecessors and became popular due to its friendly, interactive nature and its inclusion on early personal computers. Unlike languages that require all their instructions to be translated into machine code first, BASIC is turned into machine language line by line as the program runs. BASIC commands typify high-level languages because of their simplicity and their closeness to natural human language. For example, a program that divides a number in half can be written as
10 INPUT “ENTER A NUMBER,” X
30 PRINT “HALF OF THAT NUMBER IS,” Y
The numbers that precede each line are chosen by the programmer to indicate the sequence of the commands. The first line prints “ENTER A NUMBER” on the computer screen followed by a question mark to prompt the user to type in the number labeled “X.” In the next line, that number is divided by two and stored as “Y.” In the third line, the result of the operation is displayed on the computer screen. Even though BASIC is rarely used today, this simple program demonstrates how data are stored and manipulated in most high-level programming languages.
VIII. OTHER HIGH-LEVEL LANGUAGES
Other high-level languages in use today include C, C++, Ada, Pascal, LISP, Prolog, COBOL, Visual Basic, and Java. Some languages, such as the “markup languages” known as HTML, XML, and their variants, are intended to display data, graphics, and media selections, especially for users of the World Wide Web. Markup languages are often not considered programming languages, but they have become increasingly sophisticated.
a) Object-Oriented Programming Languages
Object-oriented programming (OOP) languages, such as C++ and Java, are based on traditional high-level languages, but they enable a programmer to think in terms of collections of cooperating objects instead of lists of commands. Objects, such as a circle, have properties such as the radius of the circle and the command that draws it on the computer screen. Classes of objects can inherit features from other classes of objects. For example, a class defining squares can inherit features such as right angles from a class defining rectangles. This set of programming classes simplifies the programmer’s task, resulting in more “reusable” computer code. Reusable code allows a programmer to use code that has already been designed, written, and tested. This makes the programmer’s task easier, and it results in more reliable and efficient programs.
IX. TYPES OF COMPUTERS
a) Digital and Analog
Computers can be either digital or analog. Virtually all modern computers are digital. Digital refers to the processes in computers that manipulate binary numbers (0s or 1s), which represent switches that are turned on or off by electrical current. A bit can have the value 0 or the value 1, but nothing in between 0 and 1. Analog refers to circuits or numerical values that have a continuous range. Both 0 and 1 can be represented by analog computers, but so can 0.5, 1.5, or a number like p (approximately 3.14).
A desk lamp can serve as an example of the difference between analog and digital. If the lamp has a simple on/off switch, then the lamp system is digital, because the lamp either produces light at a given moment or it does not. If a dimmer replaces the on/off switch, then the lamp is analog, because the amount of light can vary continuously from on to off and all intensities in between.
Analog computer systems were the first type to be produced. A popular analog computer used in the 20th century was the slide rule. To perform calculations with a slide rule, the user slides a narrow, gauged wooden strip inside a rulerlike holder. Because the sliding is continuous and there is no mechanism to stop at any exact values, the slide rule is analog. New interest has been shown recently in analog computers, particularly in areas such as neural networks. These are specialized computer designs that attempt to mimic neurons of the brain. They can be built to respond to continuous electrical signals. Most modern computers, however, are digital machines whose components have a finite number of states—for example, the 0 or 1, or on or off bits. These bits can be combined to denote information such as numbers, letters, graphics, sound, and program instructions.
b) Range of Computer Ability
Computers exist in a wide range of sizes and power. The smallest are embedded within the circuitry of appliances, such as televisions and wristwatches. These computers are typically preprogrammed for a specific task, such as tuning to a particular television frequency, delivering doses of medicine, or keeping accurate time. They generally are “hard-wired”—that is, their programs are represented as circuits that cannot be reprogrammed.
Programmable computers vary enormously in their computational power, speed, memory, and physical size. Some small computers can be held in one hand and are called personal digital assistants (PDAs). They are used as notepads, scheduling systems, and address books; if equipped with a cellular phone, they can connect to worldwide computer networks to exchange information regardless of location. Hand-held game devices are also examples of small computers.
Portable laptop and notebook computers and desktop PCs are typically used in businesses and at home to communicate on computer networks, for word processing, to track finances, and for entertainment. They have large amounts of internal memory to store hundreds of programs and documents. They are equipped with a keyboard; a mouse, trackball, or other pointing device; and a video display monitor or liquid crystal display (LCD) to display information. Laptop and notebook computers usually have hardware and software similar to PCs, but they are more compact and have flat, lightweight LCDs instead of television-like video display monitors. Most sources consider the terms “laptop” and “notebook” synonymous.
Workstations are similar to personal computers but have greater memory and more extensive mathematical abilities, and they are connected to other workstations or personal computers to exchange data. They are typically found in scientific, industrial, and business environments—especially financial ones, such as stock exchanges—that require complex and fast computations.
Mainframe computers have more memory, speed, and capabilities than workstations and are usually shared by multiple users through a series of interconnected computers. They control businesses and industrial facilities and are used for scientific research. The most powerful mainframe computers, called supercomputers, process complex and time-consuming calculations, such as those used to create weather predictions. Large businesses, scientific institutions, and the military use them. Some supercomputers have many sets of CPUs. These computers break a task into small pieces, and each CPU processes a portion of the task to increase overall speed and efficiency. Such computers are called parallel processors. As computers have increased in sophistication, the boundaries between the various types have become less rigid. The performance of various tasks and types of computing have also moved from one type of computer to another. For example, networked PCs can work together on a given task in a version of parallel processing known as distributed computing.
Computers can communicate with other computers through a series of connections and associated hardware called a network. The advantage of a network is that data can be exchanged rapidly, and software and hardware resources, such as hard-disk space or printers, can be shared. Networks also allow remote use of a computer by a user who cannot physically access the computer.
One type of network, a local area network (LAN), consists of several PCs or workstations connected to a special computer called a server, often within the same building or office complex. The server stores and manages programs and data. A server often contains all of a networked group’s data and enables LAN workstations or PCs to be set up without large storage capabilities. In this scenario, each PC may have “local” memory (for example, a hard drive) specific to itself, but the bulk of storage resides on the server. This reduces the cost of the workstation or PC because less expensive computers can be purchased, and it simplifies the maintenance of software because the software resides only on the server rather than on each individual workstation or PC.
Mainframe computers and supercomputers commonly are networked. They may be connected to PCs, workstations, or terminals that have no computational abilities of their own. These “dumb” terminals are used only to enter data into, or receive output from, the central computer.
Wide area networks (WANs) are networks that span large geographical areas. Computers can connect to these networks to use facilities in another city or country. For example, a person in Los Angeles can browse through the computerized archives of the Library of Congress in Washington, D.C. The largest WAN is the Internet, a global consortium of networks linked by common communication programs and protocols (a set of established standards that enable computers to communicate with each other). The Internet is a mammoth resource of data, programs, and utilities. American computer scientist Vinton Cerf was largely responsible for creating the Internet in 1973 as part of the United States Department of Defense Advanced Research Projects Agency (DARPA). In 1984 the development of Internet technology was turned over to private, government, and scientific agencies. The World Wide Web, developed in the 1980s by British physicist Timothy Berners-Lee, is a system of information resources accessed primarily through the Internet. Users can obtain a variety of information in the form of text, graphics, sounds, or video. These data are extensively cross-indexed, enabling users to browse (transfer their attention from one information site to another) via buttons, highlighted text, or sophisticated searching software known as search engines.
A Revolution In Electronics
The invention of the transistor in 1948 was a turning point in the history of electronics. Transistors are composed of a semiconducting material—that is, a substance that can act as either a conductor or an insulator. Transistors quickly replaced vacuum tubes for amplifying electronic signals in devices ranging from radios to telephone lines to military targeting devices. Without the bulky heat-generating vacuum tubes, electronic devices became much more compact and powerful. A 1951 Scientific American article heralds the opening of the age of solid-state electronics.
The history of computing began with an analog machine. In 1623 German scientist Wilhelm Schikard invented a machine that used 11 complete and 6 incomplete sprocketed wheels that could add, and with the aid of logarithm tables, multiply and divide.
French philosopher, mathematician, and physicist Blaise Pascal invented a machine in 1642 that added and subtracted, automatically carrying and borrowing digits from column to column. Pascal built 50 copies of his machine, but most served as curiosities in parlors of the wealthy. Seventeenth-century German mathematician Gottfried Leibniz designed a special gearing system to enable multiplication on Pascal’s machine.
b) First Punch Cards
In the early 19th century French inventor Joseph-Marie Jacquard devised a specialized type of computer: a silk loom. Jacquard’s loom used punched cards to program patterns that helped the loom create woven fabrics. Although Jacquard was rewarded and admired by French emperor Napoleon I for his work, he fled for his life from the city of Lyon pursued by weavers who feared their jobs were in jeopardy due to Jacquard’s invention. The loom prevailed, however: When Jacquard died, more than 30,000 of his looms existed in Lyon. The looms are still used today, especially in the manufacture of fine furniture fabrics.
c) Precursor to Modern Computer
Another early mechanical computer was the Difference Engine, designed in the early 1820s by British mathematician and scientist Charles Babbage. Although never completed by Babbage, the Difference Engine was intended to be a machine with a 20-decimal capacity that could solve mathematical problems. Babbage also made plans for another machine, the Analytical Engine, considered the mechanical precursor of the modern computer. The Analytical Engine was designed to perform all arithmetic operations efficiently; however, Babbage’s lack of political skills kept him from obtaining the approval and funds to build it.
Augusta Ada Byron, countess of Lovelace, was a personal friend and student of Babbage. She was the daughter of the famous poet Lord Byron and one of only a few woman mathematicians of her time. She prepared extensive notes concerning Babbage’s ideas and the Analytical Engine. Lovelace’s conceptual programs for the machine led to the naming of a programming language (Ada) in her honor. Although the Analytical Engine was never built, its key concepts, such as the capacity to store instructions, the use of punched cards as a primitive memory, and the ability to print, can be found in many modern computers.
XII. DEVELOPMENTS IN THE 20TH CENTURY
a) Early Electronic Calculators
Herman Hollerith, an American inventor, used an idea similar to Jacquard’s loom when he combined the use of punched cards with devices that created and electronically read the cards. Hollerith’s tabulator was used for the 1890 U.S. census, and it made the computational time three to four times shorter than the time previously needed for hand counts. Hollerith’s Tabulating Machine Company eventually merged with two companies to form the Computing-Tabulating-Recording Company. In 1924 the company changed its name to International Business Machines (IBM).
In 1936 British mathematician Alan Turing proposed the idea of a machine that could process equations without human direction. The machine (now known as a Turing machine) resembled an automatic typewriter that used symbols for math and logic instead of letters. Turing intended the device to be a “universal machine” that could be used to duplicate or represent the function of any other existing machine. Turing’s machine was the theoretical precursor to the modern digital computer. The Turing machine model is still used by modern computational theorists.
In the 1930s American mathematician Howard Aiken developed the Mark I calculating machine, which was built by IBM. This electronic calculating machine used relays and electromagnetic components to replace mechanical components. In later machines, Aiken used vacuum tubes and solid state transistors (tiny electrical switches) to manipulate the binary numbers. Aiken also introduced computers to universities by establishing the first computer science program at Harvard University in Cambridge, Massachusetts. Aiken obsessively mistrusted the concept of storing a program within the computer, insisting that the integrity of the machine could be maintained only through a strict separation of program instructions from data. His computer had to read instructions from punched cards, which could be stored away from the computer. He also urged the National Bureau of Standards not to support the development of computers, insisting that there would never be a need for more than five or six of them nationwide.
b) EDVAC, ENIAC, and UNIVAC
At the Institute for Advanced Study in Princeton, New Jersey, Hungarian-American mathematician John von Neumann developed one of the first computers used to solve problems in mathematics, meteorology, economics, and hydrodynamics. Von Neumann’s 1945 design for the Electronic Discrete Variable Automatic Computer (EDVAC)—in stark contrast to the designs of Aiken, his contemporary—was the first electronic computer design to incorporate a program stored entirely within its memory. This machine led to several others, some with clever names like ILLIAC, JOHNNIAC, and MANIAC.
American physicist John Mauchly proposed the electronic digital computer called ENIAC, the Electronic Numerical Integrator And Computer. He helped build it along with American engineer John Presper Eckert, Jr., at the Moore School of Engineering at the University of Pennsylvania in Philadelphia. ENIAC was operational in 1945 and introduced to the public in 1946. It is regarded as the first successful, general digital computer. It occupied 167 sq m (1,800 sq ft), weighed more than 27,000 kg (60,000 lb), and contained more than 18,000 vacuum tubes. Roughly 2,000 of the computer’s vacuum tubes were replaced each month by a team of six technicians. Many of ENIAC’s first tasks were for military purposes, such as calculating ballistic firing tables and designing atomic weapons. Since ENIAC was initially not a stored program machine, it had to be reprogrammed for each task.
Eckert and Mauchly eventually formed their own company, which was then bought by the Rand Corporation. They produced the Universal Automatic Computer (UNIVAC), which was used for a broader variety of commercial applications. The first UNIVAC was delivered to the United States Census Bureau in 1951. By 1957, there were 46 UNIVACs in use.
Between 1937 and 1939, while teaching at Iowa State College, American physicist John Vincent Atanasoff built a prototype computing device called the Atanasoff-Berry Computer, or ABC, with the help of his assistant, Clifford Berry. Atanasoff developed the concepts that were later used in the design of the ENIAC. Atanasoff’s device was the first computer to separate data processing from memory, but it is not clear whether a functional version was ever built. Atanasoff did not receive credit for his contributions until 1973, when a lawsuit regarding the patent on ENIAC was settled.
XIII. THE TRANSISTOR AND INTEGRATED CIRCUITS TRANSFORM COMPUTING
In 1948, at Bell Telephone Laboratories, American physicists Walter Houser Brattain, John Bardeen, and William Bradford Shockley developed the transistor, a device that can act as an electric switch. The transistor had a tremendous impact on computer design, replacing costly, energy-inefficient, and unreliable vacuum tubes.
In the late 1960s integrated circuits (tiny transistors and other electrical components arranged on a single chip of silicon) replaced individual transistors in computers. Integrated circuits resulted from the simultaneous, independent work of Jack Kilby at Texas Instruments and Robert Noyce of the Fairchild Semiconductor Corporation in the late 1950s. As integrated circuits became miniaturized, more components could be designed into a single computer circuit. In the 1970s refinements in integrated circuit technology led to the development of the modern microprocessor, integrated circuits that contained thousands of transistors. Modern microprocessors can contain more than 40 million transistors.
Manufacturers used integrated circuit technology to build smaller and cheaper computers. The first of these so-called personal computers (PCs)—the Altair 8800—appeared in 1975, sold by Micro Instrumentation Telemetry Systems (MITS). The Altair used an 8-bit Intel 8080 microprocessor, had 256 bytes of RAM, received input through switches on the front panel, and displayed output on rows of light-emitting diodes (LEDs). Refinements in the PC continued with the inclusion of video displays, better storage devices, and CPUs with more computational abilities. Graphical user interfaces were first designed by the Xerox Corporation, then later used successfully by Apple Inc.. Today the development of sophisticated operating systems such as Windows, the Mac OS, and Linux enables computer users to run programs and manipulate data in ways that were unimaginable in the mid-20th century.
Several researchers claim the “record” for the largest single calculation ever performed. One large single calculation was accomplished by physicists at IBM in 1995. They solved one million trillion mathematical subproblems by continuously running 448 computers for two years. Their analysis demonstrated the existence of a previously hypothetical subatomic particle called a glueball. Japan, Italy, and the United States are collaborating to develop new supercomputers that will run these types of calculations 100 times faster.
In 1996 IBM challenged Garry Kasparov, the reigning world chess champion, to a chess match with a supercomputer called Deep Blue. The computer had the ability to compute more than 100 million chess positions per second. In a 1997 rematch Deep Blue defeated Kasparov, becoming the first computer to win a match against a reigning world chess champion with regulation time controls. Many experts predict these types of parallel processing machines will soon surpass human chess playing ability, and some speculate that massive calculating power will one day replace intelligence. Deep Blue serves as a prototype for future computers that will be required to solve complex problems. At issue, however, is whether a computer can be developed with the ability to learn to solve problems on its own, rather than one programmed to solve a specific set of tasks.
XIV. THE FUTURE OF COMPUTERS
In 1965 semiconductor pioneer Gordon Moore predicted that the number of transistors contained on a computer chip would double every year. This is now known as Moore’s Law, and it has proven to be somewhat accurate. The number of transistors and the computational speed of microprocessors currently doubles approximately every 18 months. Components continue to shrink in size and are becoming faster, cheaper, and more versatile.
With their increasing power and versatility, computers simplify day-to-day life. Unfortunately, as computer use becomes more widespread, so do the opportunities for misuse. Computer hackers—people who illegally gain access to computer systems—often violate privacy and can tamper with or destroy records. Programs called viruses or worms can replicate and spread from computer to computer, erasing information or causing malfunctions. Other individuals have used computers to electronically embezzle funds and alter credit histories (see Computer Security). New ethical issues also have arisen, such as how to regulate material on the Internet and the World Wide Web. Long-standing issues, such as privacy and freedom of expression, are being reexamined in light of the digital revolution. Individuals, companies, and governments are working to solve these problems through informed conversation, compromise, better computer security, and regulatory legislation.
Computers will become more advanced and they will also become easier to use. Improved speech recognition will make the operation of a computer easier. Virtual reality, the technology of interacting with a computer using all of the human senses, will also contribute to better human and computer interfaces. Standards for virtual-reality program languages—for example, Virtual Reality Modeling language (VRML)—are currently in use or are being developed for the World Wide Web.
Other, exotic models of computation are being developed, including biological computing that uses living organisms, molecular computing that uses molecules with particular properties, and computing that uses deoxyribonucleic acid (DNA), the basic unit of heredity, to store data and carry out operations. These are examples of possible future computational platforms that, so far, are limited in abilities or are strictly theoretical. Scientists investigate them because of the physical limitations of miniaturizing circuits embedded in silicon. There are also limitations related to heat generated by even the tiniest of transistors.
Intriguing breakthroughs occurred in the area of quantum computing in the late 1990s. Quantum computers under development use components of a chloroform molecule (a combination of chlorine and hydrogen atoms) and a variation of a medical procedure called magnetic resonance imaging (MRI) to compute at a molecular level. Scientists use a branch of physics called quantum mechanics, which describes the behavior of subatomic particles (particles that make up atoms), as the basis for quantum computing. Quantum computers may one day be thousands to millions of times faster than current computers, because they take advantage of the laws that govern the behavior of subatomic particles. These laws allow quantum computers to examine all possible answers to a query simultaneously. Future uses of quantum computers could include code breaking (see cryptography) and large database queries. Theorists of chemistry, computer science, mathematics, and physics are now working to determine the possibilities and limitations of quantum computing.
Communications between computer users and networks will benefit from new technologies such as broadband communication systems that can carry significantly more data faster or more conveniently to and from the vast interconnected databases that continue to grow in number and type.
Microsoft Encarta 2009