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 | 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. | ||