Programming Language Paradigms • A programming paradigm is a paradigmatic style of programming (compare with a methodology which is a paradigmatic style of doing software engineering).
• A programming paradigm provides (and determines) the
view that the programmer has of the execution of the program.
• The relationship between programming paradigms and
programming languages can be complex since a programming language can support multiple paradigms. Programming Languages Misc. 2 jcmt Analysis of Paradigms
• Name structures • Data structures • Control structures
Paradigm Definitions Focusing on • actions in a program with control handled through subprograms • elements of a system to be modeled and the behaviors of those elements • application of functions with little distinction between program and data • defining the program logic and not explicitly handling program control
Programming Languages Misc. 5 jcmt
Issues with Paradigms
• One language = one paradigm?
• “Programming” vs. “Computer” language? • Languages that don’t ‘fit’ in the four paradigms discussed
Programming Languages Misc. 6 jcmt
Other Paradigms (?)
Structured Unst r uctured
Imperative Declarative Message pass ing Procedural Functional Object - oriented Value - lev e l Function - le vel Generic Scalar Array Collection - Orie n ted Flow - driven Event - driven Actor Constraint Logic Relation a l Post - object Subject - oriented Concurrency - Oriented Re flective Policy - based Class - bas e d Prototype - based (wit h in t h e c on te xt of OOP) Component - or ient e d (as in OLE) Aspect - orient e d (as i n Aspec t J) Symbolic (as in Ma t h e m atic a ) Table - Orien t ed (as in MS Fo xPro) Pipel ining (as UNI X c om ma n d line) Dataflow (as in S pr eads h e e ts)
Programming Languages Misc. 7 jcmt
Paradigm questions
• Why have different language
paradigms developed? • Which comes first - a new language or a new paradigm? • How does a paradigm help us?
Programming Languages Misc. 8 jcmt
CSE3302 Questions • Why do we have you study languages? (Have you learned anything that might be useful?) • Should we make a distinction between “programming” and “computer”languages as MacLennan does? Should we teach both? Using the language structure?
Programming Languages Misc. 9 jcmt
CSE3302 Questions • “concepts” approach versus the “comparison” approach (MacLennan) – Would you prefer the concepts approach? – Would it be easier or harder to compare languages?