순수함수는 같은 인자에 대해 항상 같은 결과를 반환하며, 함수의 실행이 다른 외부 상태에 영향을 주지 않고, 외부 상태로부터 영향을 받지 않는 함수를 의미한다. 이는 함수 호출이 독립적이며 예측 가능해야 함을 뜻한다. 순수함수는 부수 효과가 없어 프로그램의 동작을 이해하고 예측하기 쉬우며, 테스트와 유지보수가 용이하다는 장점이 있다.
Side Effect는 함수가 외부 상태를 변경하거나, 외부 상태에 의존하는 것을 의미한다. 예를 들어, 함수가 외부 변수를 수정하거나, 파일 시스템을 변경하거나, 전역 변수를 사용할 때 Side Effects가 발생한다. Side Effects는 프로그램의 예측 불가능성을 높이고 오류를 유발할 수 있으므로, 가능한 한 제한하거나 제어하는 것이 바람직하다.
함수형 프로그래밍은 다음과 같은 이유로 많이 사용된다:
순수함수는 Thread Safe하다. 이는 함수가 외부 상태를 변경하지 않고, 외부 상태에 의존하지 않기 때문이다. 따라서, 여러 스레드가 동시에 같은 순수함수를 호출하여도 서로에게 영향을 미치지 않아 동시성 문제에서 자유롭다.
고차함수는 다른 함수를 인자로 받거나, 함수를 결과로 반환하는 함수를 말한다. 고차함수는 코드의 추상화 수준을 높여 더 강력하고 유연한 코드를 작성할 수 있게 해준다. 예를 들어, map
, filter
, reduce
와 같은 고차 함수는 배열과 같은 컬렉션을 다룰 때 매우 유용하다.
함수형 프로그래밍은 이러한 특성들을 활용하여 프로그램의 안정성을 높이고 유지보수를 용이하게 만들며, 복잡한 시스템의 개발을 단순화하는 데 큰 도움을 준다.