Computer Science/Software Engineering
CS - Software Engineering - 함수형 프로그래밍
besforyou999
2022. 11. 4. 17:11
[ 함수형 프로그래밍 ]
다른 이름 = 선언형 프로그래밍
함수형 프로그래밍은 순수 함수와 보조 함수의 조합을 통해 외부 상태를 변경하는 부수 효과를 최소화해서 불변성(immutability)을 지향하는 프로그래밍 패러다임이다.
함수형 프로그래밍 특징
1. 순수함수 (Pure Function)
- 동일한 입력에는 항상 동일한 값을 반환하는 함수
- 함수 실행이 side effect를 발생시키지 않는 함수
- side effect 예시
- 프로그램 상태 변경
- 함수 외부 변수 변경
- 함수의 입력, 출력과 관계없는 작업
2. 비상태, 불변성 (Stateless, Immutability)
- 함수형 프로그래밍에서 데이터는 불변성을 유지해야 한다.
- 데이터 변경이 필요한 경우, 원본 데이터의 복사본을 만들어 복사본을 사용한다.
3. 선언형 함수
명령형 프로그래밍은 무엇을 어떻게 할 것인가에 주목하고, 선언형 프로그래밍은 무엇을 할 것인가에 주목한다.
4. 1급 객체와 고차함수 (First-class, Higher-order functions)
함수형 프로그래밍에서는 함수가 1급 객체가 된다. 1급 객체의 특징은 다음과 같다.
- 변수나 데이터 구조안에 담을 수 있다.
- 파라미터로 전달 할 수 있다.
- 반환값(return value)으로 사용할 수 있다.
- 할당에 사용된 이름과 관계없이 고유한 구별이 가능하다.
- 동적으로 프로퍼티 할당이 가능하다.
[ 함수형 프로그래밍의 장단점 ]
장점
- 높은 수준의 추상화 제공
- 함수 단위 코드 재사용이 수월
- 불변성을 지향하기 때문에 프로그램의 동작을 예측하기 쉬워진다.
단점
- 순수함수를 구현하기 위해서는 코드의 가독성이 좋지 않을 수 있다.
- 함수형 프로그래밍에서는 반복이 for문이 아닌 재귀를 통해 이루어지는데, 무한 루프에 빠질 가능성이 있다.
- 순수함수를 사용하는 것은 쉬울 수 있으나 조합하는 것은 쉽지 않다.
[ 출처 ]
https://github.com/gyoogle/tech-interview-for-developer/blob/master/Computer%20Science/Software%20Engineering/Fuctional%20Programming.md
https://jongminfire.dev/%ED%95%A8%EC%88%98%ED%98%95-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%EC%9D%B4%EB%9E%80
GitHub - gyoogle/tech-interview-for-developer: 👶🏻 신입 개발자 전공 지식 & 기술 면접 백과사전 📖
👶🏻 신입 개발자 전공 지식 & 기술 면접 백과사전 📖. Contribute to gyoogle/tech-interview-for-developer development by creating an account on GitHub.
github.com