Introduction

Download Report

Transcript Introduction

Programming Paradigms
Introduction
Definitions

Programming Language



notation for specifying programs/computations
consists of words, symbols, and rules for
writing a program
Programming Paradigm



6/15/2005
programming “technique”
way of thinking about programming
view of a program
Copyright 2005, by the authors of these slides, and Ateneo de
Manila University. All rights reserved.
L1: Introduction
Slide 2
Programming Paradigms

Imperative Programming


Object-Oriented Programming


program as a collection of classes for interacting
objects
Functional Programming


program as a collection of statements and procedures
affecting data (variables)
program as a collection of (math) functions
Others
6/15/2005
Copyright 2005, by the authors of these slides, and Ateneo de
Manila University. All rights reserved.
L1: Introduction
Slide 3
Some Languages by Paradigm

Imperative (also called Structured or
Procedural) Programming


Object-Oriented Programming


FORTRAN, BASIC, COBOL, Pascal, C
SmallTalk, C++, Java
Functional Programming

6/15/2005
LISP, ML, Haskell
Copyright 2005, by the authors of these slides, and Ateneo de
Manila University. All rights reserved.
L1: Introduction
Slide 4
History of Languages

1950s to 1960s


1960s to 1970s


(ALGOL-based) Pascal and others
1970s to 1980s


FORTRAN, COBOL, LISP, BASIC
Prolog, C, Ada
1980s to 1990s

6/15/2005
C++, ML, Perl, Java
Copyright 2005, by the authors of these slides, and Ateneo de
Manila University. All rights reserved.
L1: Introduction
Slide 5
Paradigm Change



For example, from Procedural to ObjectOriented Programming
Arises from problems encountered in one
paradigm but addressed in another
Case study: from C to C++


6/15/2005
Evolution from procedural, to modular, to objectbased, to object-oriented programming
Stroustrup book section 1.2 (2nd edition, pp. 14-22):
required reading material
Copyright 2005, by the authors of these slides, and Ateneo de
Manila University. All rights reserved.
L1: Introduction
Slide 6
Case Study: Stacks

Stack



last-in, first-out structure
operations: push, pop
Stacks are used to support some solution


6/15/2005
push and pop are defined and implemented
as functions
the solution consists of code that invoke
these functions
Copyright 2005, by the authors of these slides, and Ateneo de
Manila University. All rights reserved.
L1: Introduction
Slide 7
Implementing a Stack

Stack can be implemented as an array




Or as a linked list


array contains pushed elements
an integer refers to top of the stack
most common implementation
using pointers and dynamic allocation
Other implementations
6/15/2005
Copyright 2005, by the authors of these slides, and Ateneo de
Manila University. All rights reserved.
L1: Introduction
Slide 8
Array Implementation in C
char Store[MAX];
int top = 0;
void push(char x)
{
if (top < MAX)
Store[top++] = x;
else
printf(“full\n”);
}
6/15/2005
char pop()
{
if (top > 0)
return Store[--top];
else
printf(“empty\n”);
}
...
Copyright 2005, by the authors of these slides, and Ateneo de
Manila University. All rights reserved.
L1: Introduction
Slide 9
Using the Stack
void application()
{
…
push(‘x’);
…
result = pop();
…
}
6/15/2005
Copyright 2005, by the authors of these slides, and Ateneo de
Manila University. All rights reserved.
L1: Introduction
Slide 10
Procedural Programming

Focus is on writing good functions and
procedures


use the most appropriate implementation and
employ correct efficient algorithms
Stack example (assume array implementation)



6/15/2005
one source file
Store and top are global variables
stack and application functions defined at the same
level (file)
Copyright 2005, by the authors of these slides, and Ateneo de
Manila University. All rights reserved.
L1: Introduction
Slide 11
Problems

Application can alter implementation
details



can directly manipulate top and Store from
application()
integrity of stack not ensured
Stack code and application code are not
separated
6/15/2005
Copyright 2005, by the authors of these slides, and Ateneo de
Manila University. All rights reserved.
L1: Introduction
Slide 12
Encapsulation and
Modular Programming

Focus is on writing good modules



hide implementation details from user
provide an interface
Stack example



6/15/2005
stack.h contains prototypes for push, pop
stack.c contains stack code, Store and top
declared static (local to stack.c)
application includes stack.h
Copyright 2005, by the authors of these slides, and Ateneo de
Manila University. All rights reserved.
L1: Introduction
Slide 13
Benefits from Modules



Application cannot destroy the integrity of
the stack
Stack implementation can change without
affecting application source
Question: what happens if we need more
than one stack?
6/15/2005
Copyright 2005, by the authors of these slides, and Ateneo de
Manila University. All rights reserved.
L1: Introduction
Slide 14
Multiple Stacks

Strategy 1 (use structs)



in stack.h, define a stack structure that
contains Store and top; push, pop now have an
extra parameter that specifies which stack
application code defines stack variables
Strategy 2 (use handles)


6/15/2005
implement multiple data structures in stack.c
use an integer (the handle) to specify “stack
number”
Copyright 2005, by the authors of these slides, and Ateneo de
Manila University. All rights reserved.
L1: Introduction
Slide 15
Modules and
Multiple Stacks

Disadvantage of strategy 1:



implementation (data) is exposed
back to original problem on stack integrity
Disadvantage of strategy 2:


6/15/2005
stack module will be unnecessarily complex
handle is artificial (what if an arbitrary integer
is passed?)
Copyright 2005, by the authors of these slides, and Ateneo de
Manila University. All rights reserved.
L1: Introduction
Slide 16
Abstract Data Types and
Object-based Programming

Focus is on writing good classes (or types)
that define operations on objects of the
class



class defined like a module (encapsulation
enforced) but multiple instances now possible
user-defined type
Stack example (C++)

6/15/2005
stack.h and stack.cpp define a stack class
Copyright 2005, by the authors of these slides, and Ateneo de
Manila University. All rights reserved.
L1: Introduction
Slide 17
Object-Oriented Programming



Incorporates both encapsulation and inheritance
through the class concept
Focus is on writing good classes and on
code reuse
Examples


6/15/2005
Shape, Circle, and Rectangle in a drawing program
Employee, Faculty, Staff in a university personnel
system
Copyright 2005, by the authors of these slides, and Ateneo de
Manila University. All rights reserved.
L1: Introduction
Slide 18
What’s Next?



Survey of languages by paradigm
Discussion of language features and
language design decisions
Related areas: language implementation,
translation, syntax, semantics
6/15/2005
Copyright 2005, by the authors of these slides, and Ateneo de
Manila University. All rights reserved.
L1: Introduction
Slide 19