These are not the only programming paradigms, but by far are the most common in use today.

Many languages are hybrids and fully or partially support more than one paradigm.

Procedural Programming

Languages: C, PHP, JavaScript, Pascal, Delphi

Procedural programming can be said to be the oldest form of mainstream coding and was predominant from the 1960s until the 1990s. It is still used widely today. Procedural programming has largely been replaced with OOP, but due to the resurgence of embedded projects as well as scripting languages, procedural programming has held its own and will for the foreseeable future.


  • Simple and straightforward.
  • Easy to learn


  • “Starts to crack” when the code base or complexity becomes large. In procedural programming, complexity often only begets further complexity.

Object Oriented Programming (OOP)

Many languages claim that they support OOP, but they do so in such a limited or convoluted way that only languages which are said to effectively and generally embrace OOP are listed.

Despite what many new coders will tell you, OOP is still king. While it is yielding in certain areas to the resurgence of Functional Programming, OOP is still set to be the king for the foreseeable future.

Languages: C++, C#, Java, Visual Basic.NET, Python, SmallTalk, Delphi


  • Great at implementing complex systems


  • Higher memory requirements – Not that much of an issue today in the context of desktops and phones, but in the embedded world can still be a factor.

Functional Programming (FP)

Functional Programming can be done in any language that supports procedural programming, however for it to be effective the language must have FP as part of its design, or be dynamic enough to allow the coder to implement it effectively.

Despite what many FP coders will tell you, especially new coders, FP is not set to take over the coding world any time soon. FP is very good at certain tasks, but as an exclusive general paradigm it is not well suited.

Languages: F# (explicit), JavaScript (implicit)


  • Not limited to, but very good at mathematical and formulaic tasks.


  • Despite the hype, actual use remains limited to specific types of tasks and is why languages like F# have not replaced or made significant dents against C# and Visual Basic.NET.

Additional Resources