Highlights of the History of Computationmercer/Presentations/ISTA130/historyOfComputing.pdf• Met...
Transcript of Highlights of the History of Computationmercer/Presentations/ISTA130/historyOfComputing.pdf• Met...
Topic 1:
Highlights of the History of Computation
History of Computation – ISTA 130 v1.0 (McCann) – p. 1
What is a “Computer”?
• Originally, a “computer” was an occupation
◦ In 1500s France, a computeur was a person who performed
calculations, such as a surveyor or an astronomer
• Today, a computer is a machine that performs
calculations. But . . .
◦ How do we define ‘machine?’ ‘Calculations?’
◦ Which of these are “computers?”
· iPhone?
· graphing calculator?
· MP3 player?
· microwave oven?
· LCD wristwatch?
History of Computation – ISTA 130 v1.0 (McCann) – p. 2
Computers of Yore (1 / 16): The AbacusImage Credit: Wikimedia Commons
• Dates to at least 1000 B.C.
• Often faster than a calculator for basic math!
History of Computation – ISTA 130 v1.0 (McCann) – p. 3
Computers of Yore (2 / 16): PascalineImage Credit: Wikimedia Commons
• Invented by French mathematician Blaise Pascal in
1642 at age 19
• Could add and subtract in decimal
• Pascal claimed to have build 50 and sold a dozen
History of Computation – ISTA 130 v1.0 (McCann) – p. 4
Computers of Yore (3 / 16): The Difference Engine
Image Credit: Jitze Couperus
• Designed by Charles Babbage in the early 1800s• Meant to create tables of logarithms• Finally built in 1991 – and it worked!
History of Computation – ISTA 130 v1.0 (McCann) – p. 5
Computers of Yore (4 / 16): The Analytical Engine
Image Credit: Douglas Eichenberg
• Also designed by Babbage, in 1837, but never built• Programmable via punched cards• Its first program is credited to Ada, Countess of Lovelace
History of Computation – ISTA 130 v1.0 (McCann) – p. 6
Computers of Yore (5 / 16): Hollerith’s Tabulating Machine
Image Credit: Computer History Museum, San Jose, CA
• Cut US census time from 7.5 (1880) to <3 (1890) years• Popularized punched cards for data storage• Hollerith’s company became IBM in 1924
History of Computation – ISTA 130 v1.0 (McCann) – p. 7
Computers of Yore (6 / 16): The ABCImage Credit: kerryr.net
• ABC == (John) Atanasoff - (Clifford) Berry Computer (1937)• The first electronic digital computer• Stored values in binary (base 2)• Not general-purpose; solved systems of ≤ 28 linear equations
History of Computation – ISTA 130 v1.0 (McCann) – p. 8
Computers of Yore (7 / 16): Konrad Zuse’s Z3Image Credit: Wikimedia Commons
• The first programmable, automatic computer (1941)• Electromechanical (2,000 relays)• Used by Germany to study performance of airplane wings• Destroyed by Allied bombs in 1943
History of Computation – ISTA 130 v1.0 (McCann) – p. 9
Computers of Yore (8 / 16): ColossusImage Credit: Wikimedia Commons
• First electronic, digital, programmable computers (1944)• Used by Britain to decrypt German communications during WWII• Kept classified until the late 1970s
History of Computation – ISTA 130 v1.0 (McCann) – p. 10
Computers of Yore (9 / 16): Harvard Mark IImage Credit: www2.wu-wien.ac.at
• Designed by Howard Aiken, built by IBM• Installed at Harvard in 1944• Electromechanical (3,500 relays)• Speed: 3 additions/second, 10 multiplications/minute
History of Computation – ISTA 130 v1.0 (McCann) – p. 11
Computers of Yore (10 / 16): ENIACImage Credit: U.S. Army
• ENIAC == Electronic Numerical Integrator And Calculator• Designed by John Mauchly and J. Presper Eckert• The first general-purpose, electronic computer (1946)• 17,468 vacuum tubes; 300 multiplications/second• 1000x faster than electomechanical computers• Programmed via switches and cables
History of Computation – ISTA 130 v1.0 (McCann) – p. 12
Computers of Yore (11 / 16): UNIVAC IImage Credit: computermuseum.li
• UNIVAC == UNIVersal Automatic Computer• The first commercial computer in the US (1951)
◦ First buyer: The US Census Bureau
• Used by CBS to forecast 1952 presidential election
History of Computation – ISTA 130 v1.0 (McCann) – p. 13
Computers of Yore (12 / 16): CDC 6600Image Credit: Wikimedia Commons
• The first ‘successful’ supercomputer (1964); over 100 sold• Designed by Seymour Cray, the ‘father of supercomputing’• Used transistor-based memory• Clock speed: 10 MHz (Apple iPhone 4: 800 MHz)
History of Computation – ISTA 130 v1.0 (McCann) – p. 14
Computers of Yore (13 / 16): Micral NImage Credit: feb-patrimoine.com
• First pre-assembled commercial microcomputer (1973)
• Used the Intel 8008 microprocessor (clock: 500 KHz)
• Keyboard and screen became available in 1974
History of Computation – ISTA 130 v1.0 (McCann) – p. 15
Computers of Yore (14 / 16): Xerox AltoImage Credit: Saschapohflepp
• Developed at Xerox’s Palo Alto
Research Center (PARC) in 1973
• The Alto was remarkable for its
similarities to modern computers:
◦ Graphical user interface (GUI)◦ Mouse◦ Ethernet networking◦ WYSIWYG word processing◦ Networked multiplayer games
• Not sold; about 2,000 were built for
universities and internal use at a cost of $10,000 each
• Steve Jobs ‘borrowed’ some of these ideas for the Apple Lisa (and,
a year later, Macintosh) History of Computation – ISTA 130 v1.0 (McCann) – p. 16
Computers of Yore (15 / 16): Apple IImage Credit: swtpc.com
• The first product of
Apple Computer (1976)
• Created by Steve Wozniak
and Steve Jobs
• Just a circuit board;
user supplied the rest
• CPU: MOS 6502 (1.02 MHz,
∼ 4,000 transistors)
• Memory: 4KB standard (expandable to 48KB)
• For $75, could add cassette tape storage (came with Integer
BASIC)
History of Computation – ISTA 130 v1.0 (McCann) – p. 17
Computers of Yore (16 / 16): IBM PCImage Credit: Wikimedia Commons
• Introduced August 12, 1981
• CPU: Intel 8088 (4.77 MHz,
∼ 27,000 transistors)
• Came with “IBM Cassette
BASIC” in ROM
• Cost $3,005 with monitor,
64 KB of memory, and
a 5.25-inch floppy drive
History of Computation – ISTA 130 v1.0 (McCann) – p. 18
Transistor Counts in CPUsImage Credit: Wikimedia Commons
• Moore’s Law: Transistor counts
double every two years
◦ Has been pretty accurate
since 1971 for CPUs
• Sample CPUs:
Year CPU # of Transistors
1979 Intel 8088 29,0001993 Pentium 3,100,0002000 Pentium IV 42,000,0002006 Core 2 Duo 291,000,0002010 Core i7 (6 cores) 1,170,000,000
History of Computation – ISTA 130 v1.0 (McCann) – p. 19
People of Yore (1 / 4): Ada Lovelace (1815-52)Artist: Margaret Carpenter
• Daughter of the poet Lord Byron
• Met Charles Babbage in 1833
• Translated an Italian document
on the Analytical Engine
• Added “Notes” (A–G) which included
instructions for computing Bernoulli
Numbers
• Considered the first computer
programmer
History of Computation – ISTA 130 v1.0 (McCann) – p. 20
People of Yore (2 / 4): Alan Turing (1912-54)Image Credit: Jon Callas
• English mathematician and
cryptanalyst
• Created a model of
computation known as
the Turing machine
• Proved that his machine
could compute anything
computable
• Today, we say that a programming language is ‘Turing complete’ if
and only if it can simulate a Turing machine.
• See also: Church-Turing Thesis, Turing Test, Turing Award
History of Computation – ISTA 130 v1.0 (McCann) – p. 21
People of Yore (3 / 4): John Backus (1924-2007)
Image Credit: IBM
• Hired in 1950 to be a programmer at IBM
• Led team that created FORTRAN,
the first high-level programming
language, from 1954-7
• Created Backus-Naur Form (BNF)
to describe language grammars
• Won the Turing Award in 1977
History of Computation – ISTA 130 v1.0 (McCann) – p. 22
People of Yore (4 / 4): Grace Hopper (1906-92)Image Credit: gracehopper.org
• Earned a PhD in Math from Yale in 1934
• Worked as a programmer of the
Harvard Mark I
◦ Popularized “debugging” after a moth
was removed from a relay
• Designed the language FLOW-MATIC
that inspired the development of COBOL
• Retired as Rear Admiral in 1986
• Liked to hand out 30cm wires representing one nanosecond
History of Computation – ISTA 130 v1.0 (McCann) – p. 23
Progression of Programming Languages
• Programming Languages are the intermediaries
between humans and computers
◦ We express our intentions in a programming
language, and those statements are translated to
instructions that the computer can understand
• Languages are sometimes grouped into ‘generations,’
based on their distance from the computer’s native set
of operations
History of Computation – ISTA 130 v1.0 (McCann) – p. 24
1st Generation: Machine Language (ML)
• Direct representations of the computer’s instructions
• Each CPU design has its own machine language
• Example: Generate the ‘99 Bottles of Beer’ lyrics in Apple II (MOS
6502) machine language:
1000:A9 63 85 FE A9 14 20 2B 10 A2 23 A0 02 20 4F 101010:A9 08 20 2B 10 A2 00 A0 45 C6 FE 30 32 A2 46 A01020:24 20 4F 10 A9 17 20 2B 10 F0 D9 48 A6 FE D0 091030:A2 6A A0 07 20 4F 10 F0 05 A9 00 20 24 ED A0 081040:A6 FE CA D0 01 88 A2 27 20 4F 10 A2 2F 68 A8 BD1050:5A 10 20 ED FD E8 88 D0 F6 60 AE 8D C7 CF A0 D41060:CF A0 D4 C8 C5 A0 D3 D4 CF D2 C5 A0 C1 CE C4 A01070:C2 D5 D9 A0 D3 CF CD C5 A0 CD CF D2 C5 AC 8D B91080:B9 A0 C2 CF D4 D4 CC C5 D3 A0 CF C6 A0 C2 C5 C51090:D2 A0 CF CE A0 D4 C8 C5 A0 D7 C1 CC CC AE 8D 8D10A0:AE 8D D4 C1 CB C5 A0 CF CE C5 A0 C4 CF D7 CE A010B0:C1 CE C4 A0 D0 C1 D3 D3 A0 C9 D4 A0 C1 D2 CF D510C0:CE C4 AC 8D CE CF A0 CD CF D2 C5
Credit: 99-bottles-of-beer.net
History of Computation – ISTA 130 v1.0 (McCann) – p. 25
2nd Generation: Assembly Language (AL)
• Computer instructions are represented by mnemonics
• A program called an assembler translates the mnemonics into
machine language
• Example: A 80386 assembly language fragment:
cmp eax, 0
jz thenblock
mov ebx, 2
jmp next
thenblock:
mov ebx, 1
next:
Credit: drpaulcarter.com/pcasm
History of Computation – ISTA 130 v1.0 (McCann) – p. 26
3rd Generation: High-Level Languages (HLLs)
• Closer to English than is assembly language
• One HLL statement may represent several machine language
commands
• HLLs include FORTRAN, COBOL, C, and Java
• Example: Python (another HLL):
for i in range(1,11,1):
if i % 2 == 0:
print(i, "is even.")
else:
print(i, "is odd.")
History of Computation – ISTA 130 v1.0 (McCann) – p. 27
4th Generation: ‘What, not How’ Languages (4GLs)
• All prior generations require the programmer to tell the computer
exactly what to do and how to do it
• 4GLs allow the programmer to state only what they want the
computer to do; the computer will figure out the how by itself
• Example: SQL (the standard relational database language):
SELECT name, salary, manager_name
FROM employee, supervisor
WHERE boss_id = manager_id
AND salary < 35000;
• Possible because of the restricted problem domain!
History of Computation – ISTA 130 v1.0 (McCann) – p. 28
A Brief History of Python ( 1 / 2 )Image Credit: Jason E. Kaplan
• Python was created in the late 1980s
by Guido van Rossum, while working
as a programmer in Amsterdam
• Named after “Monty Python’s Flying
Circus”
• Features:
◦ Interpreted (vs. Compiled)◦ Object-Oriented (as are C++ and Java)◦ Portability (available for many operating systems)◦ Easy-to-learn syntax
• Used by Google, Industrial Light and Magic, Rackspace, NYSE,
YouTube, NASA, reddit, . . .
History of Computation – ISTA 130 v1.0 (McCann) – p. 29
A Brief History of Python ( 2 / 2 )
• Timeline of Python’s Development:
◦ Dec 1989 – Project started
◦ Feb 1991 – First release (v. 0.9)
◦ Jan 1994 – Version 1.0
◦ Oct 2000 – Version 2.0
◦ Dec 2009 – Version 3.0
· Note: 3.0 is not backward-compatible
• Current (August 2011) versions are:
◦ 2.7 (last of the 2.* line)
◦ 3.2
• In this class, we’ll be using Python 3.
History of Computation – ISTA 130 v1.0 (McCann) – p. 30