Choosing a programming style has been a matter of heated discussion for years. Whether you incline more towards declarative or imperative paradigms, they both have a lot to offer. If you are a seasoned professional wanting to develop your expertise and learn additional languages or a client seeking help in developing software that will satisfy all your business needs, this article will come in handy.

It is crucial to make a choice of programming paradigm based on the type of project and its requirements as the primary goal is to provide a perfect solution that covers all the client’s needs. In our article, we are analyzing the key features of Functional (FP) and Object-Oriented Programming (OOP), their pros and cons.

Pros and cons of Functional Programming vs Object-Oriented Programming

When we analyze the two types of programming we shall remember that they belong to either declarative model (FP), where the code serves as a description of what you’re aiming to do, or imperative model (OOP) that utilizes multiple commands responsible for a specific action.

Both styles solve certain scopes of problems from different angles. The declarative style draws attention to the problem aspect, whereas the imperative drives to finding out about the mechanism and performance of the system. In other words, declarative programming is the result while imperative programming is the step-by-step guide to achieving that result.

So, what are the main peculiarities of FP and OOP?

Functional programming vs object-oriented programming

Pillars of Object-Oriented Programming

OOP comprises of the four pillars:

  • Abstraction (hiding irrelevant information and keeping the core one)
  • Inheritance (the process of one class or object retaining the attributes of another class)
  • Encapsulation (prevention of unauthorized access to the unrelated data by hiding them)
  • Polymorphism (creation of a new entity by combining several elements)

Fundamentals of Functional Programming

  • First-class function (a function can be built in the runtime, passed as a parameter, returned, and even get assigned some value)
  • Higher-order function (can take functions as arguments and return the functions as values)
  • Pure function (take and return the same value as an input value without any modifications to the data)
  • An anonymous function (a function without a name usually utilized within a short period)
  • Recursion (allows writing concise algorithms based on the input data to the functions)
  • Persistent data structure (a data structure that keeps their previous version when undergoing modifications)
  • Non-strict (lazy) evaluation (an evaluation of a function is performed only when this function is called)


One of the major differences between the two approaches is that Functional programming focuses on data and their transformations of the functions whereas Object-oriented is based on objects and models.




Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store

Custom software development company offering a wide range of IT Consulting, Web and Mobile development, Quality Management, BI and BigData services.