At its core, software development solves a problem or achieves a result with computation. The software development process first defines a problem, then presents a solution. Object oriented programming is one of several major approaches to the software development process.
The object structure makes it flexible within a program. Objects can transfer information by calling and passing data to another object's methods. Also, new classes can receive, or inherit, all the features from a base or parent class. This helps to reduce repeated code.
Functional programming is an approach to software development based around the evaluation of functions. Like mathematics, functions in programming map input to output to produce a result. You can combine basic functions in many ways to build more and more complex programs.
Functional programming follows a few core principles:
Functional programming is a style of programming where solutions are simple, isolated functions, without any side effects outside of the function scope.
INPUT -> PROCESS -> OUTPUT
Functional programming is about:
Isolated functions - there is no dependence on the state of the program, which includes global variables that are subject to change
Pure functions - the same input always gives the same output
Functions with limited side effects - any changes, or mutations, to the state of the program outside the function are carefully controlled
fp focuses on what. imperative focuses on how