Programming Paradigms as Language Destiny

Marianne Bellotti
The Technical Archaeologist
4 min readNov 19, 2020


Why do some programming languages feel neat and orderly and others seem loaded with inconsistencies?

Technology vector created by artmonkey

When I first started trying to write my own programming language I was surprised by how difficult it seemed to be to find best practices on language design. In an industry filled with opinions, where people will fight to the death over tabs -vs- spaces, there isn’t much guidance for would-be program language designers.

Eventually I came to my own conclusions: the pathway to success with program language design is to think of programming paradigms as logical groupings of abstractions and be as intentional about what is included and what isn’t.

What Is a Programming Paradigm?

A programming paradigm can be thought of as a philosophy of structuring and executing code. Unlike styles and conventions, paradigms cannot be leveraged unless they are built into the design of the language. You probably already know many programming paradigms:

  • Object-orientated programming
  • Functional programming
  • Procedural programming

Then there are some more obscure ones you might not know about:

  • Logical programming
  • Agent-orientated programming
  • Metaprogramming

Most mainstream programming languages mix paradigms. Single paradigm languages are not really all that useful, but the languages that we find clean and beautiful tend to implement support for paradigms in a more structured way. The languages that people tend to think are “ugly” present the abstractions as alternative ways of doing the same thing, without any reference to the paradigm it was created to support. When we mix abstractions that have fundamentally different assumptions, we end up with really ugly work arounds and unknown consequences.

Paradigm Groupings



Marianne Bellotti
The Technical Archaeologist

Author of Kill It with Fire Manage Aging Computer Systems (and Future Proof Modern Ones)