5월 14일 - 순수함수

Yullgiii·2024년 5월 14일
0
post-thumbnail

함수형 프로그래밍과 순수 함수

순수함수 (Pure Function)

순수함수는 같은 인자에 대해 항상 같은 결과를 반환하며, 함수의 실행이 다른 외부 상태에 영향을 주지 않고, 외부 상태로부터 영향을 받지 않는 함수를 의미한다. 이는 함수 호출이 독립적이며 예측 가능해야 함을 뜻한다. 순수함수는 부수 효과가 없어 프로그램의 동작을 이해하고 예측하기 쉬우며, 테스트와 유지보수가 용이하다는 장점이 있다.

Side Effect

Side Effect는 함수가 외부 상태를 변경하거나, 외부 상태에 의존하는 것을 의미한다. 예를 들어, 함수가 외부 변수를 수정하거나, 파일 시스템을 변경하거나, 전역 변수를 사용할 때 Side Effects가 발생한다. Side Effects는 프로그램의 예측 불가능성을 높이고 오류를 유발할 수 있으므로, 가능한 한 제한하거나 제어하는 것이 바람직하다.

함수형 프로그래밍의 동기

함수형 프로그래밍은 다음과 같은 이유로 많이 사용된다:

  • 불변성(Immutability): 데이터가 변경 불가능하므로, 프로그램의 상태를 예측하기 쉬워진다.
  • 함수의 일급 객체(First-class Function): 함수를 변수에 저장하거나 다른 함수로부터 반환받을 수 있다. 이를 통해 고차 함수를 구현할 수 있다.
  • 병렬 처리 용이: 불변성과 순수함수로 인해, 프로그램의 다른 부분과 독립적으로 함수를 실행할 수 있어 병렬 처리가 간편하다.
  • 모듈성: 작은 함수로 프로그램을 분할하여 각 함수가 독립적으로 작동하게 함으로써, 코드의 재사용성과 테스트 용이성을 높인다.

순수함수와 Thread Safety

순수함수는 Thread Safe하다. 이는 함수가 외부 상태를 변경하지 않고, 외부 상태에 의존하지 않기 때문이다. 따라서, 여러 스레드가 동시에 같은 순수함수를 호출하여도 서로에게 영향을 미치지 않아 동시성 문제에서 자유롭다.

고차함수 (Higher-order Function)

고차함수는 다른 함수를 인자로 받거나, 함수를 결과로 반환하는 함수를 말한다. 고차함수는 코드의 추상화 수준을 높여 더 강력하고 유연한 코드를 작성할 수 있게 해준다. 예를 들어, map, filter, reduce와 같은 고차 함수는 배열과 같은 컬렉션을 다룰 때 매우 유용하다.

함수형 프로그래밍은 이러한 특성들을 활용하여 프로그램의 안정성을 높이고 유지보수를 용이하게 만들며, 복잡한 시스템의 개발을 단순화하는 데 큰 도움을 준다.

profile
개발이란 무엇인가..를 공부하는 거북이의 성장일기 🐢

0개의 댓글