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

4469 단어 자바자바

📌 절차지향

✅ 특징

  • 초기의 프로그래밍 방식으로, 일이 진행 순서대로 프로그래밍 하는 방법( 데이터의 흐름에 기반한 프로그래밍 )
  • 순차적인 처리가 중요하며 프로그램 전체가 유기적으로 연결되도록 만드는 프로그램 기법
  • 함수로 부터 데이터를 받아서 기능을 구현하는 방식
  • 컴퓨터의 작업 처리방식과 유사하여 상대적으로 더 빠르다.
  • 순서와 흐름을 먼저 세우고 필요한 자료구조와 함수들을 설계하는 방식.
  • '프로그램이 무슨일을 하는가?' 라는 사고에서 비롯된 개념(기능적 가치)
  • 상위로부터 하위로 쪼개 나가는 방식 때문에 Top-down방식이라고도 함(큰 문제를 해결하기 위해 몇개의 작은 문제들로 나누어 해결)

✅ 단점

  • 각 코드의 순서가 민감하게 연결되어있어, 규모가 커지고 복잡도가 올라갈 수록 유지보수 및 분석에 어려움이 있다.

📌 객체지향

  • 'JAVA', 'C++', 'Python' 등 최근언어는 모두 적용

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

  • 함수보다 데이터를 표현하는 객체 중심으로 프로그래밍하며 객체간의 유기적인 동작을 한다.

  • 자료구조와 이를 중심으로 한 모듈들을 먼저 설계한 다음에 실행 순서와 흐름을 짜는 방식

  • '현실세계의 어떤 대상을 모델링 하는가?'의 관점으로 바라본 프로그래밍 기법

  • 객체들을 조합하여 큰 문제를 해결하는 Bottom-up방식을 지향함(작은 문제를 해결 해결할 수 있는 객체를 만든 후 이를 조합하여 큰 문제를 해결)

  • 독립성/신뢰성 높게 만들어 놓으면 이후 재사용가능 -> 개발기간, 비용이 줄어듦

✅ 단점

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

📌 함수형 프로그래밍

  • 클로저, 하스켈, 리스프

✅ 특징

  • 함수 자체가 일급객체가되는 프로그래밍 기법. (객체지향에서는 클래스(또는 Object)가 일급객체이다.)
  • 일급 객체란 다른 요소들과 아무런 차별이 없는 객체를 뜻함.
  • 상태값을 지니지 않는 함수들의 연속. (객체지향에서는 프로그램에서 상호작용하는 객체들의 집합)
  • 값의 연산 및 결과 도출 중심으로 코드작성이 이루어짐.
  • 함수는 인자로 받은 값을 별도로 저장하지 않고, 간결한 과정으로 처리하고 매핑하는데 목적을 둠.
  • 객체지향보다 코드가 간결하여 사이드이펙트를 미연에 방지한다.
  • 데이터형에 구애받지 않는다.

✅ 명령형과 선언형 자바스크립트 비교

  • 명령형
function mult2 (arr){
    let results = []
    for(let i=0; i<arr.length; i++{
    	results.push(arr[i]*2);
    }
    return result
}
  • 선언형
function mult2(arr){
    return arr.map((v) => item *2);
}
  • 위에서 보는바와 같이 명령형(절차/객체 지향)은 어떻게(HOW) 하는지 차근차근 풀어쓰는 반면 선언형(함수형) 프로그래밍은 무엇(What)을 할것인가를 짧게 나타낸다.

🧩 Reference

좋은 웹페이지 즐겨찾기