1. 프로그래밍 패러다임이란 Programming Paradigm
Programming Paradigm이란 개발 방법론을 뜻함.
프로그래밍 패러다임은 프로그래머가 컴퓨터 프로그램을 제작할 때의 관점이라고 할 수 있음.
선언형과 함수형 프로그래밍, 객체지향 프로그래밍, 절차형 프로그래밍 등이 있고 이런 패러다임들을 혼합해서 사용 가능함.
프로그래밍 패러다임은 관점이자 시각이기 때문에 대상의 실체는 변하지 않지만 동일한 대상에 대해서 정의를 다르게 내릴 수도 있음.
예를 들어 객체지향 프로그래밍은 프로그램을 상호 작용하는 객체들의 집합으로 보는 반면,
함수형 프로그래밍은 프로그램을 상태 값을 지니지 않는 함수 값들의 연속으로 봄.
2. 프로그래밍 언어와 프로그래밍 패러다임 Programming Language and Programming Paradigm
어떤 언어는 특정 패러다임을 지원하기도 함.
jdk 1.8 이전의 자바는 객체지향 프로그래밍을 지원하고,
하스켈은 함수형 프로그래밍을 지원함.
여러 패러다임을 지원하는 언어는 CPP, PYTHON, JAVASCRIPT 등이 있음.
프로그래밍 패러다임의 분류
프로그래밍 패러다임은 크게 선언형/명령형으로 나뉘고,
선언형은 함수형이라는 하위 집합을 가짐.
명령형은 객체지향/절차지향으로 나눔.
선언형 및 함수형 프로그래밍 / 객체지향 프로그래밍 / 절차지향 프로그래밍 순서로 살펴볼 예정.
3. 첫 번째 패러다임 - 선언형과 함수형 프로그래밍 Declarative & Functional Programming
선언형 프로그래밍
선언형 프로그래밍은 '무엇을' 풀어내는가에 집중하는 패러다임.
(명령형 프로그래밍은 '어떻게' 풀어내는가에 집중.)
'프로그램은 함수로 이루어진 것이다.'라는 명제를 포함함.
함수형 프로그래밍은 선언형 패러다임의 일종
함수형 프로그래밍
- 정의 : 함수형 프로그래밍은 작은 순수 함수들을 블록처럼 쌓아 로직을 구현하고, 고차 함수를 통해 재사용성을 높인 프로그래밍 패러다임.
- 자바스크립트는 단순하고 유연한 언어로, 함수가 일급 객체이기 때문에 객체지향 프로그래밍보다는 함수형 프로그래밍 방식이 선호됨.
- 파이썬 / 자바스크립트
- 특징 : 순수 함수 Pure Function / 비상태 & 불변성 Stateless&Immutability / 선언형 함수 / 1급 객체와 고차 함수
순수 함수
자바스크립트의 reduce() 함수는 '배열'을 받아서 누적한 결괏값을 반환하는 순수 함수. 출력이 입력에만 의존하는 것을 의미
하단의 pure 함수가 전역 번수의 영향을 받는다면 순수 함수가 아님.
(1) 동일한 입력에 대해 항상 같은 값을 반환하는 함수.
(2) 함수 실행이 프로그램의 실행에 영향을 미치지 않는 함수.
(3) 함수 내부에서 인자의 값을 변경하거나 프로그램 상태를 변경하는 Side Effect가 없음.
const pure = (a, b) => {
return a + b
}
고차 함수와 일급 객체
- 고차 함수 : 함수가 함수를 값처럼 매개변수로 받아 로직을 생성할 수 있는 것.
(1) 함수를 인자로써 전달할 수 있다.
(2) 함수의 반환 값으로 또 다른 함수를 사용할 수 있다. - 일급 객체 : 고차 함수를 쓰기 위해서는 해당 언어가 일급 객체라는 특징을 가져야 함
그 특징은 다음과 같다.
(1) 변수나 메서드에 함수를 할당 가능
(2) 함수 안에 함수를 매개변수로 담을 수 있음
(3) 함수가 함수를 반환할 수 있음
Reference
도서 : 면접을 위한 CS 전공지식 노트
'Programming Paradigm' 카테고리의 다른 글
2. 객체지향 프로그래밍 OOP (0) | 2022.10.20 |
---|---|
3. 절차형 프로그래밍 Procedural Programming (0) | 2022.10.20 |