Transcript Chapter 0

Beginning Snapshots
Chapter 0
Objectives
Give an overview of computer science
• Show its breadth
Provide context for computer science
concepts
• Events from the past
Describe basic components, organization
of a computer
C++ An Introduction to Computing, 3rd ed.
2
Areas of Computer Science
Algorithms and Data
Structures
Architecture
Artificial Intelligence
and Robotics
Database and
Information Retrieval
Human-Computer
Communication
Numerical and
Symbolic Computation
Operating Systems
Programming
Languages
Software Methodology
and Engineering
Social and
Professional Context
C++ An Introduction to Computing, 3rd ed.
3
Important Concepts in Computer
History
The mechanism of arithmetic
The stored program
The graphical user interface
The computer network
C++ An Introduction to Computing, 3rd ed.
4
Machines to Do Arithmetic
Early calculators
•
•
•
•
•
•
•
Abacus
Stonehenge
Al-Khowarizm
Napier's bones
Slide rule
Pascaline
Leibniz' calculator
3000 B.C.
1900 – 1600 B.C
12th Century
1612
1630
1642
1673
C++ An Introduction to Computing, 3rd ed.
5
The Stored Program
Jacquard loom
1801
Mechanical Computers
• Babbage's Difference Engine 1822
• Babbage's Analytical Engine
1833
• Ada Augusta
1842
C++ An Introduction to Computing, 3rd ed.
6
Electromechanical Computers
Hollerith's tabulating
machine
Konrad Zuse
Alan Turing
The Mark I
Atanasoff's Electronic
Digital Computer (ABC)
Grace Hopper
C++ An Introduction to Computing, 3rd ed.
1890
1935-1938
1937
1944
1936-1939
1944
7
First-Generation Computers
Vacuum tube computers
ENIAC
John Von Neumann's
"First Draft of a Report on
the EDVAC"
First bug in a computer
UNIVAC
C++ An Introduction to Computing, 3rd ed.
1945-1956
1943-1946
1945
1945
1951
8
Second Generation Computers
Used transistors
FORTRAN
IBM 7090
LISP
COBOL
ALGOL 60
C++ An Introduction to Computing, 3rd ed.
1956-1963
1957
1958
1960
9
Third-Generation Computers
Chips and Integrated
Circuits
1964-1971
The IBM System/360
1964
The PDP-8
1965
Douglas Englebart:
the mouse, Two-D display,
editing, hypermedia,
1968
Pascal
Ken Thompson: UNIX
1969
ARPANET – The beginning of the Internet
C++ An Introduction to Computing, 3rd ed.
10
Fourth-Generation Computers
Intel 4004 Chip
1971
Dennis Richie: C
1973
Ethernet
Court rules Atanasoff was legal inventor of
first electronic digital computer
Altair, BASIC, Apple 1
1974
Apple II, Cray 1, Apple Corp.
Microsoft Corp.
1976
IBM PC
1981
11
C++ An Introduction to Computing, 3rd ed.
Fourth-Generation Computers
Bjarne Stroustrup: C++
Novell announces Netware
TCP/IP
Macintosh
Windows
Intel 386 Chip
Tim Berners—Lee: WWW
Linux
C++ An Introduction to Computing, 3rd ed.
1983
1984
1985
1986
1991
1992
12
Fourth-Generation Computers
Pentium chips, Power PC chip
MOSAIC, Apple Newton
Netscape Navigator 1.0, Yahoo!
Palm computing
James Gosling: JAVA
Windows 95, Internet Explorer,
Internet goes commercial
Windows 98, Apple's IMAC
Microsoft's court case
C++ An Introduction to Computing, 3rd ed.
1993
1994
1995
1998
13
Fourth-Generation Computers
Y2K Problem, Powermac G4
Windows 2000
1 GHZ processors
Mac OS X
Windows XP
Quantum Computer
C++ An Introduction to Computing, 3rd ed.
1999
2000
2001
2002
14
Graphical User Interface
Command line interface required precise
and cryptic commands
Xerox PARK had developed GUI prototype
in 1972
• Steve Jobs saw it several years later and used
new hardware capabilities to implement
GUI makes computer easy to use
C++ An Introduction to Computing, 3rd ed.
15
Network
Defn: Two or more computers connect to
exchange resources
•
•
•
•
•
Processing power
Storage
Access to a printer
Software resources
Messages
C++ An Introduction to Computing, 3rd ed.
16
Network
Time sharing in early 1960s
• Users communicate with host computer
ARPANET connected research center
computers in 1969
• Eventually developed into Internet
Local Area Network hardware and
operating systems developed late 1970s
ISPs now affordable, widely available for
even home computers
C++ An Introduction to Computing, 3rd ed.
17
Computing Systems
Computers have two kinds of
components:
Hardware – physical devices such as
• CPU
• memory
• storage devices
Software – programs such as
• Operating system
• applications
• utilities
C++ An Introduction to Computing, 3rd ed.
18
Hardware: CPU
Central Processing Unit (CPU):
• the “brain” of the machine
• Circuitry that performs arithmetic and logical ML
statements
CPU measurement
• Speed (roughly) in megahertz
(millions of clock-ticks per second)
Examples
• Intel Pentium, AMD K6, Motorola PowerPC, Sun
SPARC,
C++ An Introduction to Computing, 3rd ed.
19
Storage
Random Access Memory (RAM)
• “Main” memory, which is fast, but volatile...
• Analogous to a person’s short-term memory.
• Many tiny “on-off” switches
• “on” is represented by 1, “off” by 0.
Each switch is called a binary digit, or bit.
• 8 bits is called a byte.
• 210 bytes =1024 bytes is called a kilobyte (1K)
• 220 bytes is called a megabyte (1M).
C++ An Introduction to Computing, 3rd ed.
20
Storage
Secondary Memory (Disk):
• Stable storage using magnetic or optical
media.
• Analogous to a person’s long-term memory.
• Slower to access than RAM.
Examples:
• floppy disk (measured in kilobytes)
• hard disk (measured in gigabytes (230 bytes))
• CD-ROM (measured in megabytes), ...
C++ An Introduction to Computing, 3rd ed.
21
Input and Output
Input devices
• Instructions and data must be encoded in
binary form and transmitted to the CPU
Examples:
•
•
•
•
keyboard
mouse, trackball, joystick
scanner
audio, video capture boards
C++ An Introduction to Computing, 3rd ed.
22
Input and Output
Output devices
• Convert data from binary to another form
Examples
• monitors, printers
• sound, video
• robotics control
Communication between CPU and
peripheral devices is through ports
• Ports communicate via the system bus
C++ An Introduction to Computing, 3rd ed.
23
Hardware: the Bus
The Bus:
• Connects CPU to other hardware devices.
• Analogous to a person’s spinal cord.
Speed measured in megahertz
• Like the CPU
• Typically much slower than the CPU...
• The bottleneck in most of today’s PCs.
C++ An Introduction to Computing, 3rd ed.
24
Hardware: Cache
Access speed of RAM
• Faster than accessing secondary memory
• Still quite slow, relative to the rate at which the CPU
runs.
Solution:
• Add a fast cache memory to the CPU
• Store recently used instructions and data
Assumption:
• These instructions/data were needed recently
• They will be needed again in the near future.
C++ An Introduction to Computing, 3rd ed.
25
Hardware: Summary
Putting the pieces together:
cache
CPU
Main
Memory
Secondary
Memory
Bus
Program storage
• Long-term in secondary memory
• Loaded into main memory to run
• From which the CPU retrieves and executes their
statements.C++ An Introduction to Computing, 3rd ed.
26
Software: OS
Operating system (OS)
• Loaded from secondary memory into main
memory when the computer is turned on,
• Remains in memory until the computer is
turned off.
Cache
CPU
RAM
Disk
OS
Bus
C++ An Introduction to Computing, 3rd ed.
27
Software: OS
OS acts as the “manager” of the system,
• Making sure that each hardware device
interacts smoothly with the others.
Provides an interface
• Enables user to interact with the computer,
• Awaits user input if no application is running.
Examples: MacOS, Windows-95,
Windows-NT, UNIX, Linux, Solaris, ...
C++ An Introduction to Computing, 3rd ed.
28
Software: Applications
Applications are non-OS programs
• Perform some useful task
• Including word processors, spreadsheets,
databases, web browsers, C++ compilers
Example C++ compilers/environments:
• CodeWarrior (MacOS, Win95, WinNT,
Solaris)
• GNU C++ (UNIX, Linux)
• Turbo/Borland C++ (Win95, WinNT)
• Visual C++ (Win95, WinNT)
C++ An Introduction to Computing, 3rd ed.
29
Software: User Programs
Programs that are neither OS programs
nor applications are called user
programs.
User programs are what you’ll be writing
in this course.
C++ An Introduction to Computing, 3rd ed.
30
What is Programming?
Computer Program
• A sequence of statements that instruct a
computer in how to solve a problem.
Programming
• The act of designing, writing and maintaining
a program
Programmers
• People who write programs
C++ An Introduction to Computing, 3rd ed.
31
What kinds of statements
do computers understand?
A computer only understands
machine language statements.
Characteristics of machine language
• A sequence of ones and zeros
• Cause the computer to perform a particular
action, such as add, subtract, multiply, ...
C++ An Introduction to Computing, 3rd ed.
32
Machine Language (ML)
ML statements
• Stored in a computer’s memory
Computer memory is a sequence of
switches.
• an “on” switch is represented by 1,
• an “off” switch is represented by 0.
ML thus appears to be binary (base-2):
0010111010110101
C++ An Introduction to Computing, 3rd ed.
33
Early Computers
... required a programmer to write in ML...
Problem
• Easy to make mistakes!
• Such mistakes are hard to find!
• Not portable -- only runs on one kind of
machine!
Programming was very difficult!
C++ An Introduction to Computing, 3rd ed.
34
A Bright Idea
Devise a set of abbreviations (mnemonics)
corresponding to the ML statements
Create a program (the assembler) to translate
them into ML.
ADD
MOVE
CMPR
34, R1
R1,1200
R1, R2
Assembler
Assembly language
statements (mnemonics)
C++ An Introduction to Computing, 3rd ed.
1001110011
1001011010
0110110111
Machine language
statements
35
Advantages and Disadvantages
More natural than
binary.
Much easier to read
programs
Much easier to find
and fix mistakes
Still not portable to
different machines
Each machine had its
own set of mnemonics
Each had its own
assembler
C++ An Introduction to Computing, 3rd ed.
36
High Level Languages
Improvement on assembly language
• Devise a set of statements that are close
to human language (if, while, do, ...)
• Create a program to translate them into
ML.
The set of statements is called a high
level language (HLL)
The translation program is called a
compiler.
C++ An Introduction to Computing, 3rd ed.
37
Contrast Assembler and HLL Compiler
Assembler translates
one mnemonic into
one ML statement
Compiler
z = x + y;
Compiler translates
one HL statement into
several ML
statements
1010110011110101
0000000000010000
0010111010110101
0000000000010010
0010111011111101
0000000000010100
C++ An Introduction to Computing, 3rd ed.
38
Advantage of HLLs
Programs are easier to read
Errors are easier to find
Programs are portable from one
computer to another
• Assumes the language is standard
• Just create a new compiler which does the
translation into the correct ML
C++ An Introduction to Computing, 3rd ed.
39
Objectives in Programming
A program should solve a problem:
Correctly
Efficiently
Readably
In user-friendly
fashion
It actually solves the
problem
Without wasting time or
space
Understandable by another
person
In a way that is easy for its
user to use
C++ An Introduction to Computing, 3rd ed.
40
Summary of "Levels" of Computer
Languages
Low level
ML in binary language
Medium Level
Assembly language
High Level
as in C++
Hard to read, not
portable
Mnemonics, easier to
read, still not portable
Reads like English
and algebra, portable
C++ An Introduction to Computing, 3rd ed.
41
Putting It All Together
Programs and applications that are not running
are stored on disk.
Cache
CPU
RAM
OS
Disk
App
Bus
C++ An Introduction to Computing, 3rd ed.
42
Putting It All Together
When you launch a program
• OS controls the CPU
• Loads the program from disk to RAM.
Disk
RAM
OS
App
Cache
CPU
App
Bus
C++ An Introduction to Computing, 3rd ed.
43
Putting it all together
The OS then relinquishes the CPU to the
program,
Application program begins to run.
App
Disk
RAM
OS
App
Cache
CPU
App
Bus
C++ An Introduction to Computing, 3rd ed.
44
The Fetch-Execute Cycle
OS repeatedly fetches the next instruction (from
memory / cache),
Executes it
Stores any results back to memory.
App
Disk
RAM
OS
App
Cache
CPU
App
Bus
That’s all a computer does: fetch-executestore, millions of times each second!
C++ An Introduction to Computing, 3rd ed.
45