객체 지향 프로그래밍, 함수형 프로그래밍이란?
프로그래밍 패러다임은 크게 두 가지 종류로 나눠볼 수 있다. 명령형(Imperative) 프로그래밍과 선언형(Declative) 프로그래밍. 객체 지향 프로그래밍(OOP)은 명령형 프로그래밍, 함수형 프로그래밍은 선언형 프로그래밍에 속한다.
객체 지향 프로그래밍은 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 프로그래밍 패러다임 중 하나이다.
함수형 프로그래밍은 자료 처리를 수학적 함수의 계산으로 취급하고 상태와 가변 데이터를 멀리하는 프로그래밍 패러다임의 하나이다.
특히, 함수형 프로그래밍은 최근 들어 각광 받는 프로그래밍 패러다임이라고 할 수 있다. 개발 속도를 높여 생산성을 높이고, 가독성을 높이는 등 다양한 장점을 함수형 프로그래밍을 통해 얻을 수 있다.
좀 더 자세한 내용은 다음 글들을 참고하자.
[프로그래밍 언어론] 객체 지향 프로그래밍(OOP : Object Oriented Programming)란? OOP의 장단점
함수형 프로그래밍(Functional Programming)이란? 함수형 프로그래밍의 특징과 장점, 한계
[프로그래밍 언어론] 명령형(Imperative)프로그래밍과 선언형(Declarative)프로그래밍
객체 지향 프로그래밍(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 등의 함수형 프로그래밍 적인 기능들을 제공하는 것을 떠올려보자. 두 프로그래밍 패러다임 모두를 사용하며 개발 생산성을 높이고 더 안정적인 프로그래밍을 해보는 건 어떨까.
'Computer Science > [프로그래밍 언어론]' 카테고리의 다른 글
[프로그래밍 언어론] 오버라이딩(Overriding)과 오버로딩(Overloading)의 차이 (0) | 2022.12.20 |
---|---|
[프로그래밍 언어론] 명령형(Imperative)프로그래밍과 선언형(Declarative)프로그래밍 (0) | 2022.07.03 |
[프로그래밍 언어론] C/C++/JAVA/Python 비교, 프로그래밍 언어 순위, C++와 Java 차이 (0) | 2022.06.22 |
[프로그래밍 언어론] 형변환이란? 묵시적 형변환 과 명시적 형변환에 대하여 (0) | 2022.03.15 |
[프로그래밍 언어론] 객체 지향 설계 5원칙 (SOLID)란? (0) | 2022.02.16 |