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

조윤식·2022년 9월 17일
0

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

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

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

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

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

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

객체 지향 프로그래밍(OOP)

Mutable Data

명령형 프로그래밍 모델을 따른다.

How, 즉 어떻게 할 것인지에 관심이 있다

함수가 부수효과(side-effect)가 있다.

흐름 제어가 loop와 조건문에 따라 행해진다.

명령들의 실행 순서가 중요하다

병렬 코딩(Parallel coding)이 거의 없다

함수형 프로그래밍(FP)

Immutable Data

선언형 프로그래밍 모델을 따른다

What, 즉 무엇을 할 것인지에 관심이 있다.

함수가 부수효과가 없다.

흐름 제어(Flow Control)이 함수 호출과 재귀(recursion)에 의해 행해진다.

명령들의 실행 순서가 그렇게 중요하지는 않다.

병렬 코딩(Parallel coding) 호환이 잘 된다

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

출처: https://code-lab1.tistory.com/246?category=1252894 [코드 연구소:티스토리]

profile
Slow and steady wins the race

0개의 댓글