객체지향 vs 절차지향 vs 함수형 프로그래밍
📌 절차지향
✅ 특징
- 초기의 프로그래밍 방식으로, 일이 진행 순서대로 프로그래밍 하는 방법( 데이터의 흐름에 기반한 프로그래밍 )
- 순차적인 처리가 중요하며 프로그램 전체가 유기적으로 연결되도록 만드는 프로그램 기법
- 함수로 부터 데이터를 받아서 기능을 구현하는 방식
- 컴퓨터의 작업 처리방식과 유사하여 상대적으로 더 빠르다.
- 순서와 흐름을 먼저 세우고 필요한 자료구조와 함수들을 설계하는 방식.
- '프로그램이 무슨일을 하는가?' 라는 사고에서 비롯된 개념(기능적 가치)
- 상위로부터 하위로 쪼개 나가는 방식 때문에 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)을 할것인가를 짧게 나타낸다.
'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
Author And Source
이 문제에 관하여(객체지향 vs 절차지향 vs 함수형 프로그래밍), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@kcwthing1210/객체지향-vs-절차지향-vs-함수형-프로그래밍
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Author And Source
이 문제에 관하여(객체지향 vs 절차지향 vs 함수형 프로그래밍), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@kcwthing1210/객체지향-vs-절차지향-vs-함수형-프로그래밍저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)