45
Beginning Snapshots Chapter 0

Beginning Snapshots

  • Upload
    naoko

  • View
    44

  • Download
    2

Embed Size (px)

DESCRIPTION

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. Algorithms and Data Structures Architecture - PowerPoint PPT Presentation

Citation preview

Page 1: Beginning Snapshots

Beginning Snapshots

Chapter 0

Page 2: Beginning Snapshots

C++ An Introduction to Computing, 3rd ed. 2

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

Page 3: Beginning Snapshots

C++ An Introduction to Computing, 3rd ed. 3

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

Page 4: Beginning Snapshots

C++ An Introduction to Computing, 3rd ed. 4

Important Concepts in Computer History

The mechanism of arithmetic

The stored program

The graphical user interface

The computer network

Page 5: Beginning Snapshots

C++ An Introduction to Computing, 3rd ed. 5

Machines to Do Arithmetic

Early calculators• Abacus 3000 B.C.• Stonehenge 1900 – 1600 B.C• Al-Khowarizm 12th Century• Napier's bones 1612• Slide rule 1630• Pascaline 1642• Leibniz' calculator 1673

Page 6: Beginning Snapshots

C++ An Introduction to Computing, 3rd ed. 6

The Stored Program

Jacquard loom 1801

Mechanical Computers• Babbage's Difference Engine 1822• Babbage's Analytical Engine 1833• Ada Augusta 1842

Page 7: Beginning Snapshots

C++ An Introduction to Computing, 3rd ed. 7

Electromechanical Computers

Hollerith's tabulating machine 1890

Konrad Zuse 1935-1938

Alan Turing 1937

The Mark I 1944

Atanasoff's ElectronicDigital Computer (ABC) 1936-1939

Grace Hopper 1944

Page 8: Beginning Snapshots

C++ An Introduction to Computing, 3rd ed. 8

First-Generation Computers

Vacuum tube computers 1945-1956

ENIAC 1943-1946

John Von Neumann's"First Draft of a Report onthe EDVAC" 1945

First bug in a computer 1945

UNIVAC 1951

Page 9: Beginning Snapshots

C++ An Introduction to Computing, 3rd ed. 9

Second Generation Computers

Used transistors 1956-1963

FORTRAN 1957

IBM 7090 1958

LISP

COBOL 1960

ALGOL 60

Page 10: Beginning Snapshots

C++ An Introduction to Computing, 3rd ed. 10

Third-Generation ComputersChips and Integrated Circuits 1964-1971The IBM System/360 1964The PDP-8 1965Douglas Englebart: the mouse, Two-D display, editing, hypermedia, 1968PascalKen Thompson: UNIX 1969ARPANET – The beginning of the Internet

Page 11: Beginning Snapshots

C++ An Introduction to Computing, 3rd ed. 11

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

Page 12: Beginning Snapshots

C++ An Introduction to Computing, 3rd ed. 12

Fourth-Generation Computers

Bjarne Stroustrup: C++ 1983

Novell announces NetwareTCP/IP

Macintosh 1984

Windows 1985

Intel 386 Chip 1986

Tim Berners—Lee: WWW 1991

Linux 1992

Page 13: Beginning Snapshots

C++ An Introduction to Computing, 3rd ed. 13

Fourth-Generation Computers

Pentium chips, Power PC chip1993

MOSAIC, Apple Newton

Netscape Navigator 1.0, Yahoo! 1994Palm computing

James Gosling: JAVA 1995Windows 95, Internet Explorer,Internet goes commercial

Windows 98, Apple's IMAC 1998Microsoft's court case

Page 14: Beginning Snapshots

C++ An Introduction to Computing, 3rd ed. 14

Fourth-Generation Computers

Y2K Problem, Powermac G4 1999

Windows 2000 20001 GHZ processors

Mac OS X 2001Windows XP

Quantum Computer 2002

Page 15: Beginning Snapshots

C++ An Introduction to Computing, 3rd ed. 15

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

Page 16: Beginning Snapshots

C++ An Introduction to Computing, 3rd ed. 16

Network

Defn: Two or more computers connect to exchange resources• Processing power• Storage• Access to a printer• Software resources• Messages

Page 17: Beginning Snapshots

C++ An Introduction to Computing, 3rd ed. 17

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

Page 18: Beginning Snapshots

C++ An Introduction to Computing, 3rd ed. 18

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

Page 19: Beginning Snapshots

C++ An Introduction to Computing, 3rd ed. 19

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,

Page 20: Beginning Snapshots

C++ An Introduction to Computing, 3rd ed. 20

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).

Page 21: Beginning Snapshots

C++ An Introduction to Computing, 3rd ed. 21

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), ...

Page 22: Beginning Snapshots

C++ An Introduction to Computing, 3rd ed. 22

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

Page 23: Beginning Snapshots

C++ An Introduction to Computing, 3rd ed. 23

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

Page 24: Beginning Snapshots

C++ An Introduction to Computing, 3rd ed. 24

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.

Page 25: Beginning Snapshots

C++ An Introduction to Computing, 3rd ed. 25

Hardware: CacheAccess 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.

Page 26: Beginning Snapshots

C++ An Introduction to Computing, 3rd ed. 26

Hardware: Summary

Putting the pieces together:

CPU

Bus

MainMemory

SecondaryMemory

cache

Program storage• Long-term in secondary memory• Loaded into main memory to run• From which the CPU retrieves and executes their statements.

Page 27: Beginning Snapshots

C++ An Introduction to Computing, 3rd ed. 27

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.

DiskRAMCPUCache

Bus

OS

Page 28: Beginning Snapshots

C++ An Introduction to Computing, 3rd ed. 28

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, ...

Page 29: Beginning Snapshots

C++ An Introduction to Computing, 3rd ed. 29

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)

Page 30: Beginning Snapshots

C++ An Introduction to Computing, 3rd ed. 30

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.

Page 31: Beginning Snapshots

C++ An Introduction to Computing, 3rd ed. 31

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

Page 32: Beginning Snapshots

C++ An Introduction to Computing, 3rd ed. 32

What kinds of statementsdo 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, ...

Page 33: Beginning Snapshots

C++ An Introduction to Computing, 3rd ed. 33

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

Page 34: Beginning Snapshots

C++ An Introduction to Computing, 3rd ed. 34

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!

Page 35: Beginning Snapshots

C++ An Introduction to Computing, 3rd ed. 35

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 34, R1MOVE R1,1200CMPR R1, R2

100111001110010110100110110111

Assembler

Assembly languagestatements (mnemonics)

Machine language statements

Page 36: Beginning Snapshots

C++ An Introduction to Computing, 3rd ed. 36

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

Page 37: Beginning Snapshots

C++ An Introduction to Computing, 3rd ed. 37

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.

Page 38: Beginning Snapshots

C++ An Introduction to Computing, 3rd ed. 38

Contrast Assembler and HLL Compiler

Assembler translates one mnemonic into one ML statement

Compiler translates one HL statement into several ML statements

1010110011110101

0000000000010000

0010111010110101

0000000000010010

0010111011111101

0000000000010100

z = x + y; Compiler

Page 39: Beginning Snapshots

C++ An Introduction to Computing, 3rd ed. 39

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

Page 40: Beginning Snapshots

C++ An Introduction to Computing, 3rd ed. 40

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

Page 41: Beginning Snapshots

C++ An Introduction to Computing, 3rd ed. 41

Summary of "Levels" of Computer Languages

Low levelML in binary language

Medium Level Assembly language

High Levelas in C++

Hard to read, not portable

Mnemonics, easier to read, still not portable

Reads like English and algebra, portable

Page 42: Beginning Snapshots

C++ An Introduction to Computing, 3rd ed. 42

Putting It All Together

Programs and applications that are not running are stored on disk.

App

DiskRAMCPUCache

Bus

OS

Page 43: Beginning Snapshots

C++ An Introduction to Computing, 3rd ed. 43

Putting It All Together

When you launch a program• OS controls the CPU • Loads the program from disk to RAM.

App

DiskRAMCPUCache

Bus

OS

App

Page 44: Beginning Snapshots

C++ An Introduction to Computing, 3rd ed. 44

Putting it all together

The OS then relinquishes the CPU to the program,

Application program begins to run.

App

DiskRAMCPUCache

Bus

OS

AppApp

Page 45: Beginning Snapshots

C++ An Introduction to Computing, 3rd ed. 45

The Fetch-Execute CycleOS repeatedly fetches the next instruction (from memory / cache),

Executes it

Stores any results back to memory.

That’s all a computer does: fetch-execute-store, millions of times each second!

App

DiskRAMCPUCache

Bus

OS

AppApp