Programming_Paradigms
Download
Report
Transcript Programming_Paradigms
Jigar Gaglani
Programming
paradigm is a fundamental
style of computer programming
Paradigms
differ in concepts and
abstractions used to represent the
elements of program
Procedural/Imperative
Functional
Logic
Object-Oriented
from latin word imperare means
“to command”
Derived
It
is based on commands that update
variables in storage
Is
a programming paradigm that describes
computation in terms of statements that
change a program state.
It
defines sequences of commands for the
computer to perform
Imperative
programming is characterized
by programming with a state and
commands
In
imperative programming, a name may
be assigned to a value and later
reassigned to another value.
A
name is tied to two bindings, a binding
to a location and to a value.
The
location is called the l-value and the
value is called the r-value.
For
example,
• X := X+2
Assignment
location.
A
changes the value at a
program execution generates a
sequence of states
The
unstructured commands contains:
• assignment command,
• sequential composition of commands,
• a provision to identify a command with a label,
• unconditional and conditional GOTO commands
The
unconditional goto command has the
form:
• goto LABELi
The sequence of instructions next executed begin with
the command labeled with LABELi.
The
conditional goto command has the
form:
• if conditional expression then goto LABELi
The
goal of structured programming is to
provide control structures that make it
easier to reason about imperative
programs.
an
IF statement corresponds to an If
condition then command and a DO
statement corresponds to a While
condition Do command.
• IF guard --> command FI=if guard then command
• DO guard --> command OD=while guard do
command
An
imperative program can only be
understood in terms of its execution
behavior.
Thus,
the whole program may need to be
examined in order to understand even a
small portion of code.
The
program is built from one or more
procedures
It
provides a programmer a means to
define precisely each step in the
performance of a task.
The
ability to re-use the same code at
different places in the program without
copying it.
An
easier way to keep track of program
flow than a collection of "GOTO" or "JUMP"
statements
Declarative
programming is a nonimperative style of programming
Does
not explicitly list command or steps
that need to be carried out to achieve the
results.
For
example:
• List<int> collection = new List<int> {1,2,3,4,5 };
Imperative
programming
• List<int> results = new List<int>();
• foreach(var num in collection)
{
if (num % 2 != 0)
results.Add(num);
}
Declarative
programming
• var results = collection.Where( num=>num%2
!= 0);
Does
not step through the collection
Procedural
• Assembler, Fortran, Cobol, C, etc
Non-Procedural
• SQL, Visual Basic, etc etc.
It
treats computation as the evaluation of
mathematical functions and avoids state
and mutable data.
It
emphasizes the application of functions,
in contrast to the imperative programming
style
Functional
programming is all about
expressions.
Functions
Functional
are used as objects in FP.
Programming is about
abstraction and reducing complexity
spam
= ['pork','ham','spices']
numbers = [1,2,3,4,5]
def eggs(item): return item
map(aFunction, aSequence)
L
= map(eggs, spam)
print L
Same
thing could have been done by:
• for i in spam:
L.append(i)
print L
If
we want to create a new list of only odd
numbers :
• def isOdd(n): return (n%2 != 0)
• L = filter(isOdd, numbers)
• print L
Alternatively
• def isOdd(n): return (n%2 != 0)
• for i in numbers:
if isOdd(i):
•
L.append(i)
• print L
•
It
is the use of mathematical logic for
computer programming
The
problem-solving task is split between
the programmer and theorem-prover
To
study logic programming means to
study proofs.
It
is based upon the fact of a backwards
reasoning proof
Eg. :
• If B1 and … and Bn then H
Prolog
is a general purpose logic
programming language associated with
artificial intelligence and computational
linguistics
It
is based on Facts and Rules
Simple
Facts:
• Facts either consist of a particular item or a
relation between items.
For
Eg :
• the fact that it is sunny is represented by writing
the program :
sunny.
We
can now ask a query of Prolog by
asking
• ?- sunny.
facts
consist of a relation and the items
that this refers to, called arguments
A
general model is shown below:
relation(<argument1>,<argument2>,....,<argume
ntN> ).
The
basic Prolog terms are an integer, an
atom, a variable or a structure.
Example
:
• likes(john,mary).
In
the above fact john and mary are two
atomes.
Consider
the following sentence :
• 'All men are mortal'
We
can express this as :
• mortal(X) :- human(X).
Let
us define the fact that Socrate is a
human.
• mortal(X) :- human(X).
human(socrate).
Now
if we ask to prolog :
• ?- mortal(socrate).
What
Why
prolog will respond ?
?
One
of Prolog's most useful features is the
simple way it lets us state generalizations.
Example:
• enjoys(vincent,X) :- burger(X).
enjoys burgers, except Big
Kahuna burgers, how do we state this in
Prolog?
Vincent
As
a first step, let's introduce another built
in predicate fail/0
fail
enables us to write some interesting
programs, and in particular, it lets us
define exceptions to general rules
Consider
the following code:
• enjoys(vincent,X) :- big_kahuna_burger(X),!,fail.
enjoys(vincent,X) :- burger(X).
burger(X) :- big_mac(X).
burger(X) :- big_kahuna_burger(X).
big_mac(a).
big_kahuna_burger(b).
big_mac(c).
The
first two lines describe Vincent's
preferences.
The
last 4 lines describe a world
containing 3 burgers, a, b, and c
This
is what happens:
• ?- enjoys(vincent,a).
yes
?- enjoys(vincent,b).
no
?- enjoys(vincent,c).
yes
The
key is the combination of ! and fail in
the first line
This
cut-fail combination lets us define a
form of negation called negation as failure
General
notation:
• neg(Goal) :- Goal,!,fail.
neg(Goal).
For
any Prolog goal, neg(Goal) will
succeed precisely if Goal does not
succeed.
Using
our new neg predicate, we can
describe Vincent's preferences as:
• enjoys(vincent,X) :-
burger(X), neg(big_kahuna_burger(X)).
Object-oriented
programming (OOP) is a
programming paradigm that uses "objects"
– data structures consisting of datafields
and methods together with their
interactions – to design applications and
computer programs.
It
is a paradigm where we focus real life
objects while programming any solution.
We
actually write behaviours of our
programming objects, those behaviours
are called methods in objected oriented
programming.
They
enable programmers to create
modules that do not need to be changed
when a new type of object is added.
A
programmer can simply create a new
object that inherits many of its features
from existing objects.
Class
Object
Instance
Method
Message passing
Inheritance
Abstraction
Encapsulation
Polymorphism
Decoupling
Encapsulation:
• a logical boundary around methods and
properties
Inheritance
Re-usability
• method overloading and overriding
Information
Hiding
• is achieved through "Access Modifiers"
What are the differences between these
programming paradigms, and are they
better suited to particular problems or
do any use-cases favor one over the
others?
http://en.wikipedia.org/wiki/Imperative_program
ming
http://www.emu.edu.tr/aelci/Courses/D-318/D318-Files/plbook/imperati.htm
http://en.wikipedia.org/wiki/Procedural_program
ming
http://www.ocamltutorial.org/functional_programming
http://boklm.eu/prolog/page_4.html
http://cs.union.edu/~striegnk/learn-prolognow/html/node90.html