1. 프로그래밍 패러다임(programming paradigm)
프로그래밍(prgramming)
하나 이상의 관련된 추상 알고리즘을 특정한 프로그래밍 언어를 이용해 구체적인 컴퓨터 프로그램으로 구현하는 기술
패러다임(paradigm)
어떤 한 시대 사람들의 견해나 사고를 근본적으로 규정하고 있는 테두리로서의 인식의 체계, 또는 사물에 대한 이론적인 틀이나 체계를 의미하는 개념을 의미한다.
프로그래밍 패러다임(programming paradigm)
개발자가 프로그래밍을 위해 어떠한 '관점'을 가지고 개발을 할지에 대해서 결정을 하는데 도움을 주는 것을 의미한다. 즉 프로그래머에게 프로그래밍의 관점을 갖게 해주고, 결정하는 역할을 한다.
프로그래밍 패러다임은 크게 선언형, 명령형으로 나누며, 선언형은 함수형이라는 하위 집합을 갖고 있다. 또한 명령형은 다시 객체지향, 절차지향으로 나눈다.
2. 선언형과 함수형 프로그래밍
선언형 프로그래밍(declarative programming)이란? 무엇을 풀어내는가에 집중하는 패러다임이며, 프로그램은 함수로 이루어진 것이다. 라는 명제가 담겨 있는 패러다임이기도 한다. 함수형 프로그래밍(functional programming)은 선언형 패러다임의 일종이다.
예를 들어 자연수로 이루어진 배열에서 최댓값을 찾으라고 한다면 다음과 같이 로직을 구성할 수 있다.
const list = [1, 2, 3, 4, 5, 11, 12]
const ret = list.reduce((max, num) => num > max ? num : max, 0)
console.log(ret) // 12
위 코드에서 reduce()는 배열만 받아서 누적한 결과값을 반환하는 순수 함수이다.
함수형 프로그래밍은 이와 같은 작은 순수 함수들을 블록처럼 쌓아 로직을 구현하고 고차 함수를 통해 재사용성을 높인 프로그래밍 패러다임이다. 자바스크립트는 단순하고 유연한 언어이며, 함수가 일급 객체이기 때문에 객체 지향 프로그래밍보다는 함수형 프로그래밍 방식을 선호한다.
순수 함수
출력이 입력에만 의조하는 것을 의미한다.
const pure = (a, b) => {
return a + b
}
pure 함수는 들어오는 매개변수 a, b에만 영향을 받는다. 만약 a, b말고 다른 전역 변수 c 등이 이 출력에 영향을 주면 순수 함수가 아니다.
고차 함수
고차 함수란 함수가 함수를 값처럼 매개변수로 받아 로직을 생성할 수 있는 것을 말한다.
일급 객체
이때 고차 함수를 쓰기 위해서는 해당 언어가 일급 객체라는 특징을 가져야 하며 그 특징은 다음과 같다.
- 변수나 메서드에 함수를 할당할 수 있다.
- 함수 안에 함술르 매개변수로 담을 수 있다.
- 함수가 함수를 반환할 수 있다.
참고로 함수형 프로그래밍은 이외에도 커링, 불변성 등 많은 특징이 있다.
객체 지향 프로그래밍에 대해서는 다음 이 시간에 다루겠다.
'CS' 카테고리의 다른 글
HTTP(Hyper Text Transfer Protocol) (0) | 2024.11.25 |
---|---|
HTTP 프로토콜 (0) | 2024.09.02 |
노출모듈 패턴 / MVC 패턴 / MVP 패턴 / MVVM 패턴 (0) | 2024.07.14 |
옵저버 패턴 / 프록시 패턴과 프록시 서버 / 이터레이터 패턴 (0) | 2024.07.05 |
싱글톤 패턴 / 팩토리 패턴 / 전략 패턴 (0) | 2024.06.29 |