Download Lecture 2

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
Programming
Process of implementing a solution to a problem
in a computer language
 Writing
 Testing
 Debugging
 Maintaining
Central Processing Unit
MEMORY
1: SET A,10
2: READ B
3: ADD A,B
4: WRITE A
….
Instr Addr
76
Register
A
30
Register
B
1
CPU
The CPU fetches an instruction using the
instruction address register, and then
executes the that instructions, and then
prepares for the next instruction
Instructions
 Instructions to a CPU are simple





Must be “executed” by hardware
Encoded as numbers
Math: Add, subtract, compare values
I/O: read, write
Memory: load/store
 Execution in hardware = designing a circuit using
“logic gates” : AND,OR,NOT and combining them
together in a circuit
 This is done by Electrical and Computer
Engineers
Sequential Execution
 Processors execute instructions one-by-one
 The instruction address is updated to point to
the next instruction
 When we write code, we expect one instruction
to be followed sequentially by the next
 We can choose a different instruction to be next,
but to do so, we have to update the instruction
register in a special way
State of the Machine
 The state of the machine
 The contents of the memory and machine
registers at a specific point in time
 Instructions change the state of the machine
 Instructions have a predictable change on the
state of the machine
 Programming is about finding a sequence of
instructions that will change from one state of
the machine to a desired state of the machine.
Early Programs
 Early programmers wrote in Machine Language
 Instructions were manually encoded as numbers
Each instruction was dialed
in by flipping switches, and
connecting input and
output of different units.
ENIAC (from Wikipedia)
Assembly Language
 Assembly Language
 A human readable version of machine language
 Still writing code directly for the machine
Assembly still used for
certain critical sections of code
where performance matters.
Requires years of training and
expertise to be a good
assembly language programmer.
Early Languages
 FORTRAN
 FORTRAN was an early language (1950’s)
A Compiler converts the
FORTRAN code into
Assembly Language, and the
Assembler converts to
Machine Language.
Mid-Level Languages
 C Language
 C is a mid-level language (1970’s)
Compiler still translates to
machine language – but the
compiler does more work than
in the older languages – so the
source code is a little more
readable.
High-Level Languages
 SQL is a high-level language
 Instructions are interpreted as commands to a
database engine – and one instruction in SQL can
generate millions of machine language
instructions.
The problem with high level languages is that they limit what we can do
with the machine – if the language doesn’t support it we cannot do it.
E.g. cannot display graphics with SQL commands
Object Oriented
 Object Oriented Programming (OOP)
 A style of programming that organizes code and
data together
 In languages like C, there is code, and there is
data; and they can be treated separately.
 Very difficult to maintain as the project grows large
 OOP organizes things into classes




classes define the data that are stored there
classes define the operations on the data
objects are instances of a class
This concept helps to quickly organize code and
create high quality systems
OOP Languages
 C++ is an OOP language
Other Languages
LISP
Smalltalk
C#