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.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s