절차지향 vs 객체지향 vs 함수형 프로그래밍

de_sj_awa·2021년 5월 17일
0

객체지향 프로그래밍은 절차지향 프로그래밍의 단점을 극복하기 위해 등장했다면, 함수형 프로그래밍은 객체지향 프로그래밍의 단점을 극복하기 위해 등장했다.

1. 절차지향 프로그래밍이란?

일이 진행되는 순서로 프로그래밍 하는 방법

장점

  • 코드의 가독성이 좋다.
  • 컴퓨터의 처리구조와 비슷해 실행 속도가 빠르다.

단점

  • 각각의 코드가 순서에 민감하게 연결되어 있어, 유지보수 및 분석이 어렵다.

2. 객체지향 프로그램이란?

모든 데이터를 객체(Object)로 취급하고, 객체가 처리 요청을 받았을 때, 객체 내부에 있는 기능을 사용해 처리하는 방법

장점

  • 코드의 재사용이 가능하다.
  • 분석과 설계의 전환이 쉽다.

단점

  • 처리 속도가 상대적으로 느리다.
  • 설계에 많은 시간이 소요된다.

3. 함수형 프로그래밍이란?

"순수 함수"를 사용해, 상태를 제어하기보단, 빨리 처리하는데 초점을 둔 방법

순수 함수란?

  • 함수의 입력이 주어지면, 항상 일관된 출력이 나오는 함수이다.
  • 외부의 영향을 받지 않는 함수이다.
  • 예제 코드
// 순수 함수
function func(a, b) {
    return a + b;	// 인자로 들어온 값만 참조해, 리턴 값을 생성

// 비순수 함수
function func(a, b) {
    return a + b + c;	// 외부 요인(c)에 따라 리턴 값이 변경됨

장점

  • 함수의 동작부가 간결해지기 때문에, 객체지향 프로그래밍에 비해 코드 이해도와 가독성이 좋아진다.

단점

  • 상태를 조작할 수 없다.

4. 함수형 프로그래밍과 객체지향 프로그래밍의 차이

  1. 함수형 프로그래밍에서는 함수(Function) 자체가 일급 객체가 되지만, 객체지향 프로그래밍에서는 클래스(또는 객체, Object)가 일급 객체가 된다.

일급 객체란?

  • 다른 요소들과 아무런 차별이 없는 객체를 뜻한다.
  • 즉, 함수의 인자로도 넘겨질 수 있고, 변수에 대입도 가능한 객체를 일급 객체라고 한다.
  • 일급 객체의 명확한 정의는 아래와 같다.
    1) 모든 일급 객체는 함수의 실질적인 매개 변수가 될 수 있다.
    2) 모든 일급 객체는 함수의 반환값이 될 수 있다.
    3) 모든 일급 객체는 할당의 대상이 될 수 있다.
    4) 모든 일급 객체는 비교 연산(==, equals)을 적용할 수 있다.
  1. 객체지향 프로그래밍에서는 프로그램을 상호작용(interaction)하는 객체들의 집합으로 볼 수 있지만, 함수형 프로그래밍에서는 상태 값을 지니지 않는 함수들의 연속으로 볼 수 있다.

객체지향 프로그래밍의 경우

  • 클래스 디자인과 객체들의 관계를 중심으로 코드 작성이 이루어진다.
  • 따라서 상태, 멤버변수, 메서드 등이 긴밀한 관계를 가지고 있다.
  • 특히 멤버변수가 어떤 상태를 가지고 있는가에 따라 결과가 달라진다.

함수형 프로그래밍의 경우

  • 값의 연산 및 결과 도출 중심으로 코드 작성이 이루어진다.
  • 함수는 인자로 받은 값을 별도로 처리하지 않고, 간결한 과정으로 처리하고 매핑하는데 주 목적을 둔다.

참고

profile
이것저것 관심많은 개발자.

0개의 댓글