2주전 함수형 프로그래밍 과제를 제출하는 나.. 그게 뭔지는 알고 하고있니?
아니야 너 잘몰라..그만둬..
멘토님의 그래서 함수형 프로그래밍이 뭔데요?
라는 질문에 나는 답을 하지 못하였고,,
그렇다 나는 설명도 못하는 그것을 과제로 제출하고 있었던 것이다.
최근의 프로그래밍 패러다임은 크게 두가지로 구분할 수 있다.
1. 명령형 프로그래밍
2. 선언형 프로그래밍
개발자들은 소프트웨어의 크기가 커짐에 따라, 복잡하게 엉켜있는 코드를 유지보수하는 것에 어려움을 갖게 되었다. 그리고 이를 해결하기 위해 함수형 프로그래밍이 등장했다.
함수형 프로그래밍은 거의 모든 것을 순수 함수로 나누어 문제를 해결하는 기법으로,
작은 문제를 해결하기 위한 함수를 작성하여 가독성을 높이고 유지보수를 용이하게 한다.
부수 효과(side effect)가 없는 순수 함수를 1급 객체로 간주하여
파라미터로 넘기거나 반환값으로 사용할 수 있으며,
참조 투명성을 지킬 수 있다.
이 어려운 문장을 자세히 살펴보자.
부수 효과는 다음과 같은 변화 또는 변화가 발생하는 작업을 의미한다.
변수의 값
이 변경된다. 자료 구조
를 제자리에서 수정한다. 순수함수(pure function)는 위에서 설명한 부수 효과(side effect)들을 제거한 함수,
즉, 함수의 실행이 외부에 영향을 끼치지 않는 함수를 의미한다.
따라서 순수함수는 병렬적인 계산이 가능하다.
메모리 I/O 관점
에서 side effect가 없는 함수
외부에 영향을 끼치지 않는 함수
1급 객체로 간주한다는 의미는 아래와 같다.
변수나 데이터 구조
안에 담을 수 있다. 파라미터
로 전달할 수 있다. 반환값
으로 사용할 수 있다. 고유한 구별
이 가능하다. 참조 투명성이란 다음과 같다.
항상 동일한 결과를 반환
해야 한다. 기존의 값은 변경되지 않고 유지
된다.