Download Programming Paradigms - Advanced Software Paradigms | CSCI 210 and more Assignments Computer Science in PDF only on Docsity! Programming Paradigms Programming languages • A Programming language is a notational system for describing tasks/computations in a machine and human readable form. • Most computer languages are designed to facilitate certain operations and not others: numerical computation, or text manipulation, or I/O. • More broadly, a computer language typically embodies a particular programming paradigm. Characteristics of a programming language: Every language has syntax and semantics: • Syntax: The syntax of a program is the form of its declarations, expressions, statements and program units. • Semantic: The semantic of a program is concerned with the meaning of its program. Abdelghani Bellaachia, Advanced Software Paradigms Page: 1 Which programming language? • Since a task can be solved in different ways (paradigms), the language used to describe the solution differs in abstractions, structures due to the way in which the problem is solved. • There is no theory that dictates the best paradigm to solve a particular problem. • Efforts by Sebesta in his Concepts of Programming Languages book: • He based his evaluation criteria on three factors and 9 characteristics. • The three criteria (R,W,R) are: Readability Writability Reliability Abdelghani Bellaachia, Advanced Software Paradigms Page: 2 • Maintainability o Factoring: The ability to group related features into a single unit. Use subroutines to group related computations units so they can be re-used in different parts of the application. o Locality: The ability to implement information hiding so that changes to a grouping (either control or data) are transparent. • Cost o Programmer training o Software creation o Compilation o Execution o Compiler cost o Poor reliability o Maintenance • Others: portability and generality Abdelghani Bellaachia, Advanced Software Paradigms Page: 5 Programming paradigms • The paradigms are not exclusive, but reflect the different emphasis of language designers. Most practical languages embody features of more than one paradigm. • Classification: Imperative/ Algorithmic Declarative Object-Oriented Functional Programming Logic Programming Algol Cobol PL/1 Ada C Modula-3 Lisp Haskell ML Miranda APL Prolog Smalltalk Simula C++ Java Imperative paradigms • It is based on commands that update variables in storage. The Latin word imperare means “to command”. • The language provides statements, such as assignment statements, which explicitly change the state of the memory of the computer. • This model closely matches the actual executions of computer and usually has high execution efficiency. Abdelghani Bellaachia, Advanced Software Paradigms Page: 6 • Many people also find the imperative paradigm to be a more natural way of expressing themselves. Abdelghani Bellaachia, Advanced Software Paradigms Page: 7 The Object-Oriented Paradigm • OO programming paradigm is not just a few new features added to a programming language, but it a new way of thinking about the process of decomposing problems and developing programming solutions • Alan Kay characterized the fundamental of OOP as follows: • Everything is modeled as object • Computation is performed by message passing: objects communicate with one another via message passing. • Every object is an instance of a class where a class represents a grouping of similar objects. • Inheritance: defines the relationships between classes. • The Object Oriented paradigm focuses on the objects that a program is representing, and on allowing them to exhibit "behavior". • Unlike imperative paradigm, where data are passive and procedures are active, in the O-O paradigm data is combined with procedures to give objects, which are thereby rendered active. Abdelghani Bellaachia, Advanced Software Paradigms Page: 10 Concurrent programming • Improve performance • Multiprogramming systems attempt to utilize resources that would otherwise be wasted, by running two or more jobs concurrently. • Multiaccess systems extend this principle, allowing many jobs to be run, each on behalf of a user at an interactive terminal. • Concurrency can be classified into: o Apparent concurrency: single processor (interleaved execution of concurrent tasks) o Real concurrency: multiprocessor environment • Issues: o How to synchronize the interactions among concurrently executing processes to maintain the internal data integrity. o Another problem is to schedule the racing processes for a limited set of shared resources. Abdelghani Bellaachia, Advanced Software Paradigms Page: 11