1. INTRODUCTION TO STRUCTURED PROGRAMMING

1.2. Programming Paradigms

A programming paradigm is a style or ―way‖ of programming. Some languages make it easy 
to write in some paradigms but not others. Never use the phrase ―programming language 
paradigm.‖ A paradigm is a way of doing something (like programming), and not a concrete 
thing (like a language). 
Some of the more common paradigms are 
 Imperative — Control flow is an explicit sequence of commands.  
 Declarative — Programs state the result you want, not how to get it.  
 Structured — Programs have clean, goto-free, nested control structures.  
 Procedural — Imperative programming with procedure calls.  
 Functional (Applicative) — Computation proceeds by (nested) function calls that avoid 
any global state.  
 Function-Level (Combinator) — Programs have no variables. No kidding.  
 Object-Oriented — Computation is effected by sending messages to objects; objects 
have state and behavior.  
o Class-based — Objects get their state and behavior based on membership in a 
class.  
o Prototype-based — Objects get their behavior from a prototype object.  
 Event-Driven — Control flow is determined by asynchronous actions (from humans or 
sensors).  
 Flow-Driven — Computation is specified by multiple processes communicating over 
predefined channels.  
 Logic (Rule-based) — Programmer specifies a set of facts and rules, and an engine 
infers the answers to questions.  
 Constraint — Programmer specifies a set of constraints, and an engine infers the 
answers to questions.  
 Aspect-Oriented — Programs have cross-cutting concerns applied transparently.  
 Reflective — Programs manipulate their own structures.  
 Array — Operators are extended to arrays, so loops are normally unnecessary.  
Paradigms are not meant to be mutually exclusive; you can program in a functional, object
oriented, event-driven style.