Professional Documents
Culture Documents
Lecturer:
Advantage:
1. Very simple to implement
2. It contains loops, variables etc.
Disadvantage:
1. Complex problem cannot be solved
2. Less efficient and less productive
3. Parallel programming is not possible
Examples of Imperative programming paradigm:
C, Fortan, Basic:
result = []
i = 0
start:
numPeople = length(people)
if i >= numPeople goto finished
p = people[i]
nameLength = length(p.name)
if nameLength <= 5 goto nextOne
upperName = toUpper(p.name)
addToList(result, upperName)
nextOne:
i = i + 1
goto start
finished:
return sort(result)
Imperative programming is divided into three broad categories: Procedural, OOP and
parallel processing. These paradigms are as follows:
Code snippets
#include <iostream>
fact = fact * i;
}
cout << "Factorial of " << num << " is: " << fact << endl;
return 0;
Advantages:
Data security
Inheritance
Code reusability
Flexible and abstraction is also present
^people filter: [:p | p name length greaterThan: 5] map: [:p | p name upper] sort
result = []
for p in people {
if p.name.length > 5 {
result.add(p.name.toUpper);
}
}
return result.sort;
select upper(name)
from people
where length(name) > 5
order by name
Functional programming paradigms
The functional programming paradigms has its roots in mathematics and it is language
independent, Hodges (2019). The key principle of this paradigms is the execution of series of
mathematical functions. The central model for the abstraction is the function which are meant
for some specific computation and not the data structure. Data are loosely coupled to
functions. The function hide their implementation. Function can be replaced with their values
without changing the meaning of the program. Some of the languages like perl, javascript
mostly uses this paradigm, Alrawais (2021).
In functional programming, control flow is expressed by combining function calls, rather than
by assigning values to variables:
sort(
fix(λf. λp.
if(equals(p, emptylist),
emptylist,
if(greater(length(name(head(p))), 5),
append(to_upper(name(head(p))), f(tail(p))),
f(tail(people)))))(people))
let
fun uppercasedLongNames [] = []
| uppercasedLongNames (p :: ps) =
if length(name p) > 5 then (to_upper(name p))::(uppercasedLongNames ps)
else (uppercasedLongNames ps)
in
sort(uppercasedLongNames(people))
The real power of this paradigm comes from passing functions to functions (and returning
functions from functions).
sort(
filter(λs. length s > 5,
map(λp. to_upper(name p),
people)))
We can do better by using the cool |> operator. Here x |> f just means f(x). The operator has
very low precedence so you can read things left-to-right:
people |> map (λp. to_upper (name p)) |> filter (λs. length s > 5) |> sort
Notice that you wouldn’t write map(λx. square(x)), right? You would write map(square). We
can do something similar above, but we have to use function composition, you know, (f o
g)x is f(g(x)), so:
people |> map (to_upper o name) |> filter (λs. length s > 5) |> sort
It can be termed as abstract model of computation. It would solve logical problems like
puzzles, series etc. In logic programming we have a knowledge base which we know before
and along with the question and knowledge base which is given to machine, it produces result,
Alrawais (2021). In normal programming languages, such concept of knowledge base is not
available but while using the concept of artificial intelligence, machine learning we have some
models like Perception model which is using the same mechanism. In logical programming the
main emphasize is on knowledge base and the problem, Brünjes and Gabbay (2020). The
execution of the program is very much like proof of mathematical statement, e.g., Prolog
predicates
sumoftwonumber(integer, integer)
clauses
sum(0, 0).
sum(n, r):-
n1=n-1,
sum(n1, r1),
r=r1+n
Krishnamurthi, S. and Fisler, K., 2019. 13 Programming Paradigms and Beyond. The
Cambridge handbook of computing education research, p.377.
Brünjes, L. and Gabbay, M.J., 2020, October. UTxO-vs account-based smart contract
blockchain programming paradigms. In International Symposium on Leveraging
Applications of Formal Methods (pp. 73-88). Springer, Cham.
Hodges, J.L., 2019. Programming Paradigms. In Software Engineering from Scratch (pp.
171-208). Apress, Berkeley, CA.
Ferguson, R., 2019. JavaScript and Programming Paradigms. In Beginning JavaScript (pp.
69-81). Apress, Berkeley, CA.
Alarcon, S.L. and Haverly, A., 2022, July. Quantum programming paradigms: boson
sampling vs qubit gates. In Photonics for Quantum 2022 (Vol. 12243, pp. 27-32). SPIE.
Silveira, S.R., Bertolini, C., Parreira, F.J., Da Cunha, G.B. and Bigolin, N.M., 2021.
IMPACTS OF REMOTE TEACHING ON THE PROGRAMMING PARADIGMS
COURSE DURING SOCIAL ISOLATION DUE TO THE COVID-19 PANDEMIC. Gestao
E Desenvolvimento, pp.200-213.
Bossard, A. and Kaneko, K., 2019, September. A new methodology for a functional and logic
programming course: On smoothening the transition between the two paradigms. In
Proceedings of the 20th Annual SIG Conference on Information Technology Education (pp.
63-68).
Alrawais, A., 2021, April. Parallel Programming Models and Paradigms: OpenMP Analysis.
In 2021 5th International Conference on Computing Methodologies and Communication
(ICCMC) (pp. 1022-1029). IEEE.
Karami, F., Owe, O. and Ramezanifarkhani, T., 2019. An evaluation of interaction paradigms
for active objects. Journal of logical and algebraic methods in programming, 103, pp.154-
183.