최근 AI, IOT, 비트코인이 뜨기 시작하며 함수형 프로그래밍이 주목받고있다.
함수형 프로그래밍은 수학과 밀접한 관련이 있기 때문에 사람이 배우기에 난해 할 수 있다.
최근에는 자바나 c++와 같이 최신 버전에 함수형이 추가된 언어들도 있다.
명령형 프로그래밍에 속하며 무엇을 구현하겠다에 초점을 두어, 자료처리를 수학적인 함수의 계산으로 취급하고 상태와 가변적인 데이터를 배제하는 프로그래밍
객체 지향 프로그래밍은 컴퓨터 프로그래밍 패러다임중 하나로, 프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법
둘은 상반되는 개념이 아니고 하나의 프로그램 방식이다. 공통적으로는 반복을 줄이고 효율적인 작업을 위해 생겨났다.
객체지향 프로그래밍과 함수형의 차이는 데이터(상태)를 다루는 개념과, ‘간결한 코드 작성’에 대한 관점 차이가 있다.
객체지향이 함수의 동작부를 *캡슐화해서 코드를 이해할 수 있게 한다면, 함수형 프로그래밍은 동작부를 최소화해서 코드 이해를 돕는다.
*데이터(상태)를 다루는 개념
객체지향은 객체 안에 상태를 저장하고, 이 상태를 이용해서 메소드를 추가하고 상태변화를 설정하고 조정하기위해 다양한 기능을 사용한다 이에 반해 함수형은 상태를 제어하는 것보다 상태를 저장하지 않고 없애는데가 포인트
객체지향 프로그래밍의 경우, 클래스 디자인과 객체들의 관계를 중심으로 코드 작성이 이루어진다. 따라서 상태, 멤버변수, 메서드 등이 긴밀한 관계를 가지고 있다. 특히 멤버변수가 어떤 상태를 가지고있는가에 따라 결과가 달라진다.
함수형 프로그래밍의 경우, 값의 연산 및 결과 도출 중심으로 코드작성이 이루어진다. 함수 내부에서 인자로 받은 값을 별도로 저장하거나 하지 않고, 간결한 과정으로 처리하고 매핑하는데에 주 목적을 둔다.