+ All Categories
Home > Documents > Overview/Questions - Computer Science · Review: Machine Language Operation Code Specifies which...

Overview/Questions - Computer Science · Review: Machine Language Operation Code Specifies which...

Date post: 07-Mar-2019
Category:
Upload: lykhuong
View: 216 times
Download: 0 times
Share this document with a friend
16
1 1 John Magee 1 August 2013 Some material copyright Jones and Bartlett CS101 Lecture 28: Programming Languages 2 Overview/Questions Programming in machine language code is a lot more fun than wiring up the basic logic gates. How could we use abstraction to make it easier to translate algorithms into computer instructions? What is pseudo code? What is a programming language?
Transcript

1

1

John Magee 1 August 2013

Some material copyright Jones and Bartlett

CS101 Lecture 28:

Programming Languages

2

Overview/Questions

– Programming in machine language code is a lot more fun than wiring up the basic logic gates.

– How could we use abstraction to make it easier to translate algorithms into computer instructions?

– What is pseudo code?

– What is a programming language?

2

3 3

What tricks does your computer do? – Web browsing, email, instant messenger

– Play games

– Watch movies, organize photos

– Word processing, spreadsheets, database

Programmability

The ability to give a general-purpose

computer instructions so that it can perform

new tasks.

Review: Programmability

4 3

Computing hardware will keep getting better,

faster, cheaper for the rest of our lives.

It’s about the software – Hardware performs only a limited set of fundamental

instructions (“tricks”).

– Software harnesses this set of instructions.

– Computers do not think, and are not creative.

Programmability

3

5

Why Learn Programming?

– Programming is a challenging and intellectually engaging experience.

– Programming is a part of computer science, and is therefore important to anyone interested in becoming a computer professional.

6

Why Learn Programming?

– Computers have become commonplace in our society, and understanding their strengths and limitations requires an understanding of programming.

– Programming can be a lot of fun.

– Programming is a skill that can pay the bills. Very well.

My students with Google/Amazon/Microsoft internships get paid more than I do!

4

7

About Learning to Program

Pre-requisites

This is a first course in computer science. There are no formal pre-requisites. Some informal pre-req’s:

– browsing files in your file system

– copying and pasting text

– some high-school level algebra

Time

Anyone can be successful at learning programming.

Decent results, however, take a lot of time.

8

Programming Languages

A program is a sequence of instructions.

Spock:

Computer. This is a Class-A compulsory directive. Compute, to the last digit, the value of pi.

Computers are not very good at understanding natural languages – Ambiguity and imprecision

– Dialects, accents, etc

5

9

Programming Languages

Computer languages are exact and unambiguous.

Programming is the process of encoding our ideas for the computer:

– Syntax (form)

– Semantics (meaning)

Popular programming languages:

– C++, Java, Perl, Python

10

Machine Language

Machine language is the set of binary coded instructions built into the hardware of a particular computer, and used directly by ALU/Control Unit.

– why are the instructions binary encoded?

– how does this encoding relate to the hardware?

6

11

Review: Machine Language

Operation Code Specifies which instruction is to be carried out. Register Specifier Specifies which register is to be used. Addressing-mode Specifier How to interpret the operand part of the instruction. – 00 for immediate (value given in operand) – 01 for direct (memory address given in operand)

12

What the Computer Can Do

Modern computer processors can do the following types of basic tasks (CPU instructions):

– Add, subtract, multiply, divide, increment, decrement

– Logical AND, OR, XOR, NOT, and NEG operations

– Load data in from RAM, store data out to RAM

– Load data from/ send data to input/output

– Compare register contents for equal to Zero, Less than Zero, Negative

– Jump to another instruction (by address)

Note: by data, we mean one word (e.g. 32 bits)

7

13

Lab 09 (Yesterday) Learning Objective

To deepen your understanding of the central processor unit, the fetch-execute cycle, and the stored program concept.

In addition, you will use pseudo code to express an algorithm, and translate the algorithm into machine-language instructions which the CPU can execute.

Secret agenda: To be thankful that we don’t have to do much machine language or assembly language programming!

14

8

15

Partial Summary

– Even the modern computer is still a moronic number-crunching, data moving device.

– Algorithms describe the explicit steps the computer must follow to solve a problem.

– Pseudocode is a tool to help us express an algorithm, but it is not understood by the computer.

– Why would anyone want to write a program in machine language?

16

Assembly Language

Assembly language

A language that uses mnemonic codes to represent machine-language instructions

Mnemonic code examples:

– LOADA means “load value into accumulator”

– ADDA means “add value into accumulator”

– STOREA means “store value from accumulator”

9

17

The Assembly Process

Assembler

A program that reads each of the instructions

in mnemonic form and translates it into the

machine-language equivalent.

18

Pep/7 Assembly Language

Mode specifier: i = immediate, d = direct (memory)

10

19

Pep/7 Assembly Language

An assembly language can have pseudo operations which do not map directly to the underlying machine language operations.

20

Example: Pseudo Code Program

Reading and adding three numbers

Set sum to 0

Read num1

Add num1 to sum

Read num2

Add num2 to sum

Read num3

Add num3 to sum

Write sum

11

21

Example: Assembly Program

22

Partial Summary

– Assembly language: much easier to write/read than machine language!

– Why not just use assembly language instead of machine language?

– Who wrote the assembler program, and what language was it written in?

– Why not just write programs in pseudo code, and have a program translate that into machine language instructions?

12

23

High-level Programming Languages

High-level language

A language that provides a richer (more English like) set of instructions. Example: a = 2

b = 5

total = a + b

print total

How can the computer understand this kind of language?

24

Source Code and Translation

A high-level language program is written in a plain-text format called source code.

There are 2 ways to translate source code into the machine-level instructions:

– Typically, a high-level language is either compiled OR interpreted.

13

25

A compiler is a program that translates a high-level

language program into machine code.

The “compile step” is done all at once, in advance

of running the program, usually by the programmer

who wrote the high-level source code.

Compilers

Figure 8.1 Compilation process

26

Most Popular Compiled Languages Fortran, 1952

– IBM, Numeric and Scientific Computing – Still in use in biology dept at BU!

Pascal, 1970 – Developed for teaching students structured Programming – Early Macintosh operating system, Apple Lisa written in Pascal

C, 1972 – Ritchie and Kernigan, AT&T Bell Laboratories – Developed for system software, UNIX

C++, 1979 – Bjarne Stroustrup, AT&T Bell Laboratories

– Backwards compatible with C, and objects

ADA, 1983 – Department of Defense – 1970s: concern that DoD had too many programming languages – By 1996: down to only 37

C and C++ together have been the most popular compiled languages with the most programmers and applications.

14

27

Interpreters

An interpreter is a program that translates and executes the program’s source code statements in sequence.

– An interpreter translates a statement and then immediately executes the statement.**

– Interpreters can be viewed as simulators.

** Whereas an assembler or compiler produces machine code as output; executing the code is a separate step.

28

Most Popular Interpreted Languages

BASIC, 1963

– Beginner’s All-purposes Special Instruction Code

– Kemeny and Kurtz, Dartmouth College

– Invented for non-science and non-mathematics users.

Perl, 1987

– Invented by Larry Wall of Unisys Corporation

– Regular Expression engine for text processing

Visual Basic/Visual Basic .NET, 1991

– Invented at Microsoft, a GUI scripting language

– Extremely popular; huge installed business application base

Python, 1991

– Guido van Rossum, researcher at BDFL in the Netherlands

– Minimalist semantics

– Named after Monty Python

15

29

Portability Portability is the ability of a program written on one

machine (CPU) to be run on different machines.

Compiler portability

A program in a standardized language can be

recompiled to run on any machine that has the

appropriate compiler. (This takes time and skill.)

Source code portability

A program in an interpreted language can be

distributed and run (interpreted) directly on any

machine that has the appropriate interpreter.

30

Compiled vs. Interpreted

Compiled Languages

– Speed: tend to run faster than interpreted languages.

– Portability: virtually none. To port to new CPU architecture, must re-compile the source code and distribute new executable file.

Interpreted Languages

– Speed: tend to run more slowly than compiled languages.

– Portability: virtually seamless. Distribute source code directly, and it will run on any suitable interpreter.

16

31

Take-Away Points

– Machine language

– Pseudo code

– Assembly language

– High-level languages

Compiled vs. translated

32

Student To Dos

– Readings: Reed ch 6

– HW08 Alice (Ch 4) – Due tonight.

– HW09 HTML Frames/CSS + Photoshop Due Monday Night

– HW10 Alice Project Demo for class next Wednesday

– Make sure your blogs are up to date!


Recommended