프로그래머에게 프로그래밍의 관점을 갖게 해주는 역할을 하는 개발 방법론
자료 처리를 수학적 함수의 계산으로 취급하고 상태와 가변 데이터를 멀리함
순수 함수로 이루어져 있음
순수 함수 : 출력이 입력에만 의존하는 것, 한 함수에 매개변수 a, b가 주어졌을 때에, 출력 결과가 a랑 b로만 영향을 받아야지 다른 전역 변수 c 같은 것에 영향을 받으면 안된다.
-> 동일한 input(인자 값)에 대해 동일한 output(리턴 값)을 리턴하는 함수
-> 외부의 상태를 변경하지 않는 함수
고차 함수 : 함수가 함수를 값처럼 매개변수로 받아 로직을 생성할 수 있는 것
장점
단점
- 일급 객체
- 다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체
- 무명의 리터럴로 생성 할 수 있음
- 변수나 자료구조 (객체, 배열)에 저장할 수 있음
- 함수의 매개변수에 전달 할 수 있음
- 함수의 반환값으로 사용할 수 있음
Q: 어떤 패러다임을 사용하는 것이 좋은가?
A: 비즈니스 로직이나 서비스의 특징을 고려하고 여러 패러다임을 조합하여 상황과 맥락에 따라 장점만 취해 개발하는 것이 좋음 -> 정답은 없다.
Q: 함수형 프로그래밍은 무엇인가요?
A: 함수형 프로그래밍은 순수 함수들을 블록처럼 쌓아 로직을 구현하고 불변성을 강조하며, 프로그램의 상태 변경을 최소화하는 것을 목표로 합니다. 수학적 함수의 개념에 기반을 두고 있으며, 이를 통해 코드의 간결성, 모듈성 및 예측 가능성을 높일 수 있습니다. 순수함수로 이루어져 있기 때문에 동일한 입력에 대해 항상 동일한 출력을 반환하며, 외부 상태에 영향을 주고 받지 않아 불변성이 유지되고 이로 인해 함수의 결과를 예측하기 쉬워지고, 테스트와 디버깅이 용이해지는 장점이 있습니다. 하지만 높은 수준의 추상화를 요구하기 때문에 코드가 이해하기 어렵고 복잡해질 수 있으며, 함수형 프로그래밍에서는 반복이 for문이 아닌 재귀를 통해 이루어지기 때문에 재귀적 코드 무한 루프에 빠질 수 있습니다.
Q: 순수 함수와 고차 함수의 차이가 무엇인지 설명 해 주세요.
A: 순수 함수는 주어진 입력 값에 대해 항상 동일한 출력 값을 반환하는 함수입니다. 다시 말해, 함수의 결과는 입력 값에만 의존하며, 외부 상태를 변경하지 않아 부수 효과(side effect)가 없는 함수입니다. 이러한 특성으로 인해 순수 함수는 예측 가능하고 테스트하기 쉽고 동일한 입력에 대한 동일한 출력을 보장하므로 코드의 안정성을 높이고 디버깅을 용이하게 만듭니다.
반면 고차 함수는 함수를 다루거나 함수를 다른 함수로 전달할 수 있는 함수입니다. 즉, 함수를 인수로 받거나 함수를 반환할 수 있습니다.
이러한 능력을 통해 고차 함수는 함수를 추상화하고 재사용성을 높이는 데 사용됩니다. 또한 고차 함수를 통해 함수를 합성하거나 변환하는 기능을 제공할 수 있습니다.
면접을 위한 CS 전공지식 노트
명령형 프로그래밍 VS 선언형 프로그래밍
함수형 프로그래밍