Programming a computer. What does programming a computer mean ? Programming a computer: Since a...

28
Programming a computer

Transcript of Programming a computer. What does programming a computer mean ? Programming a computer: Since a...

Page 1: Programming a computer. What does programming a computer mean ? Programming a computer: Since a computer can only execute machine instructions (encoded.

Programming a computer

Page 2: Programming a computer. What does programming a computer mean ? Programming a computer: Since a computer can only execute machine instructions (encoded.

What does programming a computer mean ?

• Programming a computer:

• Since a computer can only execute machine instructions (encoded in binary numbers), this means:

• Programming a computer = instruct a computer to perform a task/solve a problem        

• Write the steps of an algorithm using machine instructions !!!

Page 3: Programming a computer. What does programming a computer mean ? Programming a computer: Since a computer can only execute machine instructions (encoded.

What does programming a computer mean? (cont.)

This is a painfully complicated process

But fortunately, we have developed tools that help make this process less painful

Page 4: Programming a computer. What does programming a computer mean ? Programming a computer: Since a computer can only execute machine instructions (encoded.

Instructing a computer to execute an algorithm

• A computer is the ideal machine to execute computational algorithms because:

• Problem

Humans are not good in machine languages

• The computer can perform arithmetic operations

• It can also perform an operation only when some condition is satisfied (using the conditional branch instruction)

• We (a human) has to tell (communicate) the computer what steps to do in machine language      

Page 5: Programming a computer. What does programming a computer mean ? Programming a computer: Since a computer can only execute machine instructions (encoded.

Instructing a computer to execute an algorithm (cont.)

• We have developed specialized languages (based on the English language) to instruct/command a computer

These specialized languages are called:

• High level programming languages

Page 6: Programming a computer. What does programming a computer mean ? Programming a computer: Since a computer can only execute machine instructions (encoded.

Types of languages used in computer programming

• Machine language

• The machine language (or instruction code) consists of (binary) numbers that encode instructions for the computer

• Every computer (CPU) has its own machine language (I.e., the instruction code 1 can encode a different instruction for different CPUs)

• Instruction encoding was discussed in this webnote: click here

Page 7: Programming a computer. What does programming a computer mean ? Programming a computer: Since a computer can only execute machine instructions (encoded.

Types of languages used in computer programming (cont.)

• Assembler language or low level programming language

• An assembler language consists of (English like) mnemonics

• There is one mnemonic for each machine instruction of the computer

Page 8: Programming a computer. What does programming a computer mean ? Programming a computer: Since a computer can only execute machine instructions (encoded.

Types of languages used in computer programming (cont.)

• What an assembler program look like:

Each assembler instruction is a mnemonic that corresponds to a unique machine instruction

start

add x, y <-- one assembler instruction

sub x, y <-- one assembler instruction

...

...

end

Page 9: Programming a computer. What does programming a computer mean ? Programming a computer: Since a computer can only execute machine instructions (encoded.

High level programming language

• A high level programming language consists of (English-like) "people" language to simplify the writing computer algorithms

• A high level programming language allows the programmer to write sentences in this language which can be easily translated into machine instructions

• The sentences written in a high level programming language are called:

• statements

Page 10: Programming a computer. What does programming a computer mean ? Programming a computer: Since a computer can only execute machine instructions (encoded.

High level programming language (cont.)• What an assembler program look like:

main( )

{

if ( x > y ) // One sentence (statement) in a high level prog. lang.

{ max = x;

}

else

{ max = y;

}

.....

}

Page 11: Programming a computer. What does programming a computer mean ? Programming a computer: Since a computer can only execute machine instructions (encoded.

High level programming language (cont.)

One statement in a high level programming language is usually translated into multiple machine instruction that achieve the effect specified by the statement

Page 12: Programming a computer. What does programming a computer mean ? Programming a computer: Since a computer can only execute machine instructions (encoded.

Some well-known programming languages

• Well-known programming languages:

Name Application area Fortran Scientific application (FORmula TRANslator)Cobol Business application (COmmon Business Oriented Language)C System application (successor of a language called "B")C++ System application (successor of the language "C")Java General purpose (a simplification of "C++")C# General purpose (another simplification of "C++")

Page 13: Programming a computer. What does programming a computer mean ? Programming a computer: Since a computer can only execute machine instructions (encoded.

A taste of computer algorithm

• Recall the Euclid's Algorithm: (to find the GCD)

As long as one of the number is not zero (0) do

{

if ( number on A ≥ number on B )

replace the number on A by the value (A - B)

otherwise

replace the number on B by the value (B - A)

}

The Greatest Common Divisor (GCD) of the numbers A and B is the non-zero number on one of the papers

Page 14: Programming a computer. What does programming a computer mean ? Programming a computer: Since a computer can only execute machine instructions (encoded.

A taste of computer algorithm (cont.)• Here is the Euclid Algorithm written in the Java programming language:

public class Euclid

{

public static void main (String args[])

{

int A; // Memory cell named "A"

int B; // Memory cell named "B"

// These memory cells are like the 2 pieces of paper

// we used above. They can store and recall a value

A = 28; // Write "28" on the piece of paper named "A"

B = 36; // Write "36" on the piece of paper named "B"

System.out.println("A = " + A + " B = " + B); // Print A and B

while ( A != 0 && B != 0 )

{

if ( A >= B )

A = A - B; // Replace the number on A by (A-B)

else B = B - A; // Replace the number on B by (B-A)

System.out.println("A = " + A + " B = " + B); // Print new A and B

}

System.out.println("GCD = " + B);

}

}

Page 15: Programming a computer. What does programming a computer mean ? Programming a computer: Since a computer can only execute machine instructions (encoded.

A taste of computer algorithm (cont.)• Note:

• Don't worry if you do not understand this program.

• All I want to do is to show you is the fact that a computer can be instructed by a specialized (programming) language to do things.

• This is what you will learn later in this course !!!

Page 16: Programming a computer. What does programming a computer mean ? Programming a computer: Since a computer can only execute machine instructions (encoded.

A taste of computer algorithm (cont.)

• Example Program: (Demo previous code)

http://mathcs.emory.edu/~cheung/Courses/170/Syllabus/01/Progs/Euclid.java

How to use this program:             • Right click on the link and save in a scratch directory         

• Compile with: javac Euclid.java

• Run with: java Euclid

Page 17: Programming a computer. What does programming a computer mean ? Programming a computer: Since a computer can only execute machine instructions (encoded.

Computer Programs

• Computer Program:

• Computer program = a computer algorithm that is expressed (written) in some programming language

• Most programming languages are “English-like”

They use words from the English language

Page 18: Programming a computer. What does programming a computer mean ? Programming a computer: Since a computer can only execute machine instructions (encoded.

Representation gap: algorithm in programming and comp instructions

• Notice the following representation gap:

1. An algorithm expressed in a programming language is "English-like"

The algorithm consists of instructions that the computer must perform to accomplish a given task/solve a given problem

2. However: the instructions that a computer executes are numbers (that encode the instruction)

These numbers that encode computer instructions are not "English-like" !!!

Page 19: Programming a computer. What does programming a computer mean ? Programming a computer: Since a computer can only execute machine instructions (encoded.

Representation gap: algorithm in programming and comp instr. (cont.)

• Houston, we have a problem:

• Solution

• An algorithm expressed in a programming language cannot be executed by a computer

• Someone (or something) must translate the algorithm expressed in a programming language into numbers that encode the same instructions as the original algorithm

Page 20: Programming a computer. What does programming a computer mean ? Programming a computer: Since a computer can only execute machine instructions (encoded.

Bridging the translation gap: compiler

• We bridge the representation gap using 2 techniques:

1. We design the programming language in such a way that the sentences in the programming language can be easily understood

2. We write a (pretty complex) computer program to do the translation from:

• Algorithm written in a program language ⇒ same algorithm in machine instruction (numbers)

Page 21: Programming a computer. What does programming a computer mean ? Programming a computer: Since a computer can only execute machine instructions (encoded.

Bridging the translation gap: compiler (cont.)

• The (pretty complex) computer program that does this translation is called:

• a compiler   

Page 22: Programming a computer. What does programming a computer mean ? Programming a computer: Since a computer can only execute machine instructions (encoded.

The compilation (= translation) process

• You write an algorithm in some programming language

E.g.: a very simple program in the C programming language

main()

{

printf("Hello\n");

}

Page 23: Programming a computer. What does programming a computer mean ? Programming a computer: Since a computer can only execute machine instructions (encoded.

The compilation (= translation) process (cont.)

• Before the computer can execute the instructions in a C program, we must first compile (translate) it into machine operations using a C translator (compiler):

• cc is the command to run the C compiler (translator)

• The second word prog.c is the name of the file that contains the C program (that is being translated)

• The machine operations that result from the translation process is stored in the file:

• cc prog.c

a.out

Page 24: Programming a computer. What does programming a computer mean ? Programming a computer: Since a computer can only execute machine instructions (encoded.

The compilation (= translation) process (cont.)

• Now we can execute the program in machine instruction by using the command:

• The following figure summarizes the translation process:

>> a.out

Page 25: Programming a computer. What does programming a computer mean ? Programming a computer: Since a computer can only execute machine instructions (encoded.

The compilation (= translation) process (cont.)

• Note:

• A C compiler is a program that is executed by a computer         

• Therefore, a C compiler consists of machine instructions!!

(Computers only execute machine instructions !)

Page 26: Programming a computer. What does programming a computer mean ? Programming a computer: Since a computer can only execute machine instructions (encoded.

Example Program: (Demo previous procedure)          

• How to do the demo:

• Right click on the link and save the file prog,c in a scratch directory

• Open a command line window and go to the scratch directory

• Use this command to compile: (ignore some warning messages - I want to keep the program simple)

• Use this command to execute the file with computer instructions:

>> cc prog.c

>> a.out

Page 27: Programming a computer. What does programming a computer mean ? Programming a computer: Since a computer can only execute machine instructions (encoded.

Writing computer programs: trust your compiler !

• When you write a computer program, you will write it in a high level programming language and trust the compiler (translator) to do the translation

• It is virtually impossible to write a large computer program in machine language (binary numbers)

Page 28: Programming a computer. What does programming a computer mean ? Programming a computer: Since a computer can only execute machine instructions (encoded.

Writing computer programs: trust your compiler ! (cont.)

• Therefore:

• The high level programming language used in this course is:

• We will not dwell on machine code any longer in this course

• We will learn to write computer programs in a high level programming language

• Java