The Life of a Programmer

Fundamental programming paradigms

There are a number of fundamental ways to structure a program. Beyond just sections of code, each application, or component, has some fundamental architectural design. Is it an event driven UI, a functional financial calculator, an imperative device driver, or a deployment description?

Whereas patterns are used to describe smaller units of coding, architectural paradigms describe the overall structure: the high-level concepts of how components are combined. This includes how they connect to each other, how they provide results, and how the process executes over time.

In this series, we’ll look at these paradigms.


The choice of paradigm is not automatically decided by the programming language. Most languages have evolved to provide a variety of options, though some may favour certain paradigms. If a language is quite limited in what it offers, possibly only one paradigm, we call it domain specific. A general purpose language is one that offers all, or most, of the fundamental architectural paradigms.

Applications can comprise one or more of the fundamental paradigms. They each serve different goals with differing degrees of success. But while mixing is encouraged, it’s not good if a program’s architecture is just a random collection of techniques. The cleaner the archtitecture the easier it is to maintain the code.

Please join me on Discord to discuss, or ping me on Mastadon.

Fundamental programming paradigms

A Harmony of People. Code That Runs the World. And the Individual Behind the Keyboard.

Mailing List

Signup to my mailing list to get notified of each article I publish.

Recent Posts