# Difference Between Functional Programming and Object Oriented Programming

The main difference between functional programming and object oriented programming is that functional programming is a programming paradigm the develops a computer programming using mathematical functions while object-oriented programming is a programming paradigm that develops a computer program using objects.

Functional programming and object-oriented programming are two important programming paradigms. A programming paradigm provides the style to build the structure and elements to develop a computer program. It also helps to categorize programming languages depending on their features.

### Key Areas Covered

1.  What is Functional Programming
– Definition, Functionality
2. What is Object Oriented Programming
– Definition, Functionality
3. Difference Between Functional and Object Oriented Programming
– Comparison of Key Differences

### Key Terms

Abstraction, Encapsulation, Functional Programming, Inheritance, Object-Oriented Programming, Polymorphism, Recursive Function

## What is Functional Programming

Functional programming allows building the program using mathematical functions. In other words, it binds the program into a pure mathematical functions style. Using functional programming, the developer can build a program as a combination of separate mathematical functions.

Moreover, functional programming uses mathematical expressions. Additionally, the output value of a function depends on the arguments that are passed to the function. These functions map the inputs to the corresponding outputs.  For example, assume a function f(x) = x * x. The input 1 maps to output 1 while the input 2 maps to output 4, and input 3 maps to output 9.

Furthermore, functional programming can have pure functions and recursive functions. Pure functions are easier to understand as they do not change the state. Furthermore, recursive functions call itself until reaching the base class.

## What is Object Oriented Programming

Object-oriented programming paradigm allows developers to model real-world scenarios using objects. In other words, an object is an entity; a class creates an object. Therefore, the class defines the states and behaviors that should exist in an object. We also call states as properties, data or attributes. Moreover, methods is another name for behaviors. The objects pass data between them using methods. All other object-oriented programming concepts are based on objects and classes.

There are four major pillars in OOP. They are as follows.

Encapsulation – It helps to combine data and methods into a single unit.

Inheritance – It allows using the already existing code without writing from the beginning.

Polymorphism – It denotes the ability of an object to take multiple forms.

Abstraction – It hides the implementation details and displays only the functionality to the user.

Overall, OOP provides multiple advantages. It helps to maintain the code, allows code reusability, minimizes the code complexity and also helps to build software applications. Moreover, it is one of the most popular paradigms used in industry level software development.

## Difference Between Functional Programming and Object Oriented Programming

### Definition

Functional programming is a programming paradigm which treats computation as an evaluation of mathematical functions that avoids the changing state and mutable data. Object-oriented programming, on the other hand, is a programming paradigm based on the concept of objects which contains data in the form of fields known as attributes and code in the form of procedures known as methods. Thus, this explains the difference between functional programming and object oriented programming.

### Based on

Moreover, functional programming is based on mathematics while object-oriented programming is based on objects. Hence, this is the main difference between functional programming and object oriented programming.

### Languages

Haskell, Lisp, and Racket are some languages that support Functional programming while C++, Java, and Python are some languages that support OOP.

### Usage

Also, another difference between functional programming and object oriented programming is their usage. While functional programming is used for mathematical computations, parallelism, etc., object-oriented programming is used to develop enterprise level software.

### Conclusion

Object-oriented programming structures the program using objects and these objects pass messages between them while functional programming expresses computations as the evaluation of mathematical functions. The main difference between functional programming and object oriented programming is that functional programming is a programming paradigm the develops a computer programming using mathematical functions while object-oriented programming is a programming paradigm that develops a computer program using objects.

##### References:

1.“Functional Programming.” Wikipedia, Wikimedia Foundation, 20 Apr. 2019, Available here.
2.“Object-Oriented Programming.” Wikipedia, Wikimedia Foundation, 17 Apr. 2019, Available here.
3.“Functional Programming Paradigm.” GeeksforGeeks, 2 Jan. 2019, Available here.

##### Image Courtesy:

1.” Showing the main components of a class” By Pluke – Own work (CC0) via Commons Wikimedia