Programming Paradigms

A paradigm is a way of thinking about code. Learn the core styles (linear, structured, object-oriented and functional), then more specialized ones such as logic, concurrent and array-oriented programming.

PGP Study Progress:

0% Complete
#PGP Topic Description
PHASE 1: CORE PARADIGMS
01 Linear Programming Sequential thinking and strict top-to-bottom execution, with jumps as the only control.
02 BASIC Line-numbered programs with GOTO and GOSUB: the classic linear style.
03 Assembly One instruction after another, with labels and jumps over registers and memory.
04 Bash Command scripts that run line by line; pipelines chain steps together.
05 COBOL Paragraph-based business programs that read like sequential prose.
06 Structured Programming Sequence, selection, and repetition with decomposition into predictable blocks.
07 Pascal Designed for teaching structured programming with strong typing.
08 C Small procedural core, manual memory, and direct hardware access.
09 Fortran Structured numeric code with modules, arrays, and decades of scientific use.
10 Ada Strongly typed, structured language built for reliable and safety-critical systems.
11 Object-Oriented Programming Encapsulation, abstraction, inheritance, and polymorphism for reusable systems.
12 Smalltalk Everything is an object and every action is a message; the model that shaped OOP.
13 Self Prototype-based objects without classes.
14 Eiffel Object orientation with design by contract: preconditions, postconditions, invariants.
15 Ruby Every value is an object; blocks and open classes make it highly expressive.
16 Java Class-based OOP at industrial scale with interfaces and a rich ecosystem.
17 Functional Programming Functions, immutability, composability, and expression-driven program design.
18 Lisp The original functional language: lists, recursion, and code as data.
19 Scheme A minimalist Lisp: lambda, recursion, and first-class continuations.
20 Haskell Lazy evaluation, purity enforced by the type system, and monads for effects.
21 OCaml Type inference, variants, and modules; functional first with imperative and object features.
22 Clean Pure lazy functional language with uniqueness types for safe side effects.
23 Idris Dependent types: types that express and verify program properties.
PHASE 2: MORE PARADIGMS
24 Logic Programming Facts, rules, unification, and backtracking: declare what is true and let the engine search.
25 Prolog The classic logic language: predicates, recursion over lists, and depth-first search.
26 Datalog Declarative queries over facts with recursion; the model behind modern rule engines.
27 Clingo (Answer Set Programming) Solve combinatorial puzzles and planning problems by stating constraints.
28 Mercury Logic programming with strong static types, modes, and determinism checking.
29 Aspect-Oriented Programming Separate cross-cutting concerns such as logging and security from business logic.
30 AspectJ The reference AOP language: pointcuts, advice, and weaving for Java.
31 Spring AOP Proxy-based aspects in Spring for transactions, caching, and auditing.
32 PostSharp Compile-time aspects for C# and .NET using attributes.
33 Component-Oriented Programming Systems assembled from self-contained, replaceable parts with explicit interfaces.
34 Web Components Custom elements, shadow DOM, and templates: native reusable browser components.
35 OSGi Dynamic modules and services for the Java platform.
36 .NET Components Assemblies, dependency injection, and component libraries on .NET.
37 Angular A full component framework with templates, services, and dependency injection.
38 Concurrent and Actor Programming Processes, message passing, and shared-nothing design for scalable systems.
39 Erlang Lightweight processes, supervision trees, and fault tolerance built in.
40 Elixir Actor model on the BEAM virtual machine with a modern, expressive syntax.
41 Go CSP-style concurrency with goroutines and channels.
42 Pony Actor language with capabilities that make data races impossible by construction.
43 Reactive and Dataflow Programming Programs as streams of values and change propagation instead of explicit control flow.
44 RxJS (ReactiveX) Observables and operators for asynchronous event streams.
45 Elm Functional reactive architecture for web front ends with no runtime exceptions.
46 LabVIEW Visual dataflow programming where wires carry data between nodes.
47 Array-Oriented Programming Operate on whole arrays at once: rank, broadcasting, and tacit composition.
48 APL The original array language with its own symbolic notation.
49 J ASCII descendant of APL built on verbs, adverbs, and trains.
50 BQN A modern array language with a cleaner, more consistent design.
PHASE 3: HYBRID LANGUAGES
51 Popular Hybrid Languages Why most modern languages mix paradigms, and how to choose a style per problem.
52 Python Procedural, object-oriented, and functional styles in one readable language.
53 JavaScript Prototypes, first-class functions, and event-driven programming.
54 Julia Multiple dispatch, functional style, and array programming for scientific computing.
55 Racket A language for building languages: functional, object-oriented, and logic in libraries.
56 Systems Multi-Paradigm Languages Performance-oriented languages that combine low-level control with high-level abstractions.
57 C++ Procedural, object-oriented, generic, and functional styles with zero-cost abstractions.
58 Rust Ownership-based memory safety with traits, algebraic types, and functional idioms.
59 C# Object-oriented core with LINQ, async, pattern matching, and functional features.
60 Object-Functional and Beyond Languages that unify objects and functions, and research languages that mix even more models.
61 Scala Objects and functions unified on the JVM, with powerful types and implicits.
62 Kotlin Pragmatic OO and functional blend with null safety and coroutines.
63 Swift Protocol-oriented design with value types, closures, and generics.
64 F# Functional-first language on .NET with objects and units of measure.
65 Oz (Mozart) Research language combining logic, functional, constraint, and concurrent models.
FREE REFERENCES TO LEARN MORE
Programming paradigm (Wikipedia) Overview and taxonomy of paradigms with links to each family.
Structure and Interpretation of Computer Programs Classic MIT text on abstraction, functional and object models (Scheme).
Learn Prolog Now! Free online introduction to logic programming.
Learn You a Haskell for Great Good! Friendly, free introduction to pure functional programming.
Learn You Some Erlang for Great Good! Free guide to concurrency and fault tolerance with Erlang.
Pharo by Example Free books on Smalltalk and pure object orientation.
AspectJ Documentation Official guides for aspect-oriented programming in Java.
Web Components (MDN) Reference and tutorials for component-oriented web development.
The Elm Guide Free guide to reactive, functional front-end programming.
ReactiveX Documentation Concepts and operators for reactive streams across languages.
Learn APL Free interactive introduction to array programming.
The Rust Programming Language Official free book on a modern multi-paradigm systems language.
Python Tutorial Official tutorial showing procedural, object-oriented, and functional styles.
Scala Documentation Official free guides for object-functional programming.