[프로그래밍 언어론] 객체 지향 프로그래밍(OOP) vs 함수형 프로그래밍(FP) 비교

객체 지향 프로그래밍, 함수형 프로그래밍이란?

프로그래밍 패러다임은 크게 두 가지 종류로 나눠볼 수 있다. 명령형(Imperative) 프로그래밍과 선언형(Declative) 프로그래밍. 객체 지향 프로그래밍(OOP)은 명령형 프로그래밍, 함수형 프로그래밍은 선언형 프로그래밍에 속한다.

 

객체 지향 프로그래밍은 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 프로그래밍 패러다임 중 하나이다.

 

함수형 프로그래밍은 자료 처리를 수학적 함수의 계산으로 취급하고 상태와 가변 데이터를 멀리하는 프로그래밍 패러다임의 하나이다.

 

특히, 함수형 프로그래밍은 최근 들어 각광 받는 프로그래밍 패러다임이라고 할 수 있다. 개발 속도를 높여 생산성을 높이고, 가독성을 높이는 등 다양한 장점을 함수형 프로그래밍을 통해 얻을 수 있다.

 

좀 더 자세한 내용은 다음 글들을 참고하자.

 

[프로그래밍 언어론] 객체 지향 프로그래밍(OOP : Object Oriented Programming)란? OOP의 장단점

 

[프로그래밍 언어론] 객체 지향 프로그래밍(OOP : Object Oriented Programming)란? OOP의 장단점

객체 지향 프로그래밍(OOP)과 객체(Object) 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는

code-lab1.tistory.com

 

함수형 프로그래밍(Functional Programming)이란? 함수형 프로그래밍의 특징과 장점, 한계

 

함수형 프로그래밍(Functional Programming)이란? 함수형 프로그래밍의 특징과 장점, 한계

프로그래밍 패러다임 프로그래밍 패러다임(Programming Paradigm)은 프로그래머에게 프로그래밍의 관점을 갖게 하고, 결정하는 역할을 한다. 이러한 프로그래밍 패러다임은 다음과 같이 크게 두 가지

code-lab1.tistory.com

 

[프로그래밍 언어론] 명령형(Imperative)프로그래밍과 선언형(Declarative)프로그래밍

 

[프로그래밍 언어론] 명령형(Imperative)프로그래밍과 선언형(Declarative)프로그래밍

명령형(Imperative) 프로그래밍 명령형 프로그래밍이란 프로그램의 상태와 상태를 변경시키는 구문의 관점에서 연산을 설명하는 프로그래밍 패러다임의 일종이다. 쉽게 설명하자면, 컴퓨터가 수

code-lab1.tistory.com

 

 

객체 지향 프로그래밍(OOP) vs 함수형 프로그래밍(FP) 

객체 지향 프로그래밍과 함수형 프로그래밍을 간단하게 비교해보면 다음과 같은 차이점들이 존재한다.

 

객체 지향 프로그래밍(OOP) 함수형 프로그래밍(FP)
Mutable Data Immutable Data
명령형 프로그래밍 모델을 따른다. 선언형 프로그래밍 모델을 따른다
How, 즉 어떻게 할 것인지에 관심이 있다 What, 즉 무엇을 할 것인지에 관심이 있다.
함수가 부수효과(side-effect)가 있다. 함수가 부수효과가 없다.
흐름 제어가 loop와 조건문에 따라 행해진다. 흐름 제어(Flow Control)이 함수 호출과 재귀(recursion)에 의해 행해진다.
명령들의 실행 순서가 중요하다 명령들의 실행 순서가 그렇게 중요하지는 않다.
병렬 코딩(Parallel coding)이 거의 없다 병렬 코딩(Parallel coding) 호환이 잘 된다

 

하지만 객체 지행 프로그래밍과 함수형 프로그래밍은 상호 배제적인 관계가 아니다. 오히려 둘은 상호 보완적인 관계라 할 수 있다. JAVA 같은 OOP 언어에서 Lamda, Stream 등의 함수형 프로그래밍 적인 기능들을 제공하는 것을 떠올려보자. 두 프로그래밍 패러다임 모두를 사용하며 개발 생산성을 높이고 더 안정적인 프로그래밍을 해보는 건 어떨까.

 

 

반응형

댓글

Designed by JB FACTORY