함수형 프로그래밍이란?
순수 함수들로만 조합해서 프로그램을 완성하는 프로그래밍 패러다임. 여기서 순수 함수란 내부 상태를 갖지 않아서 같은 입력에 대해서 항상 같은 출력을 보장하는 함수
함수형 프로그래밍의 특징 및 장단점
불변성을 추구
불변성을 지향하는 프로그래밍 패러다임이다. 즉 변경 가능한 상태를 최대한 제거하려고 하는 언어. 다른 말로 순수 함수를 지향하는 프로그래밍 언어라고 하기도 하는데, 순수 함수란 위에서 언급했듯이 내부 상태를 갖지 않아서 같은 입력에 대해 항상 같은 출력이 보장되는 함수이다. 또 다른 표현으로는 side effect가 없는 함수라고 한다. side effect가 없는 함수의 예시로는 삼각 함수가 있다. 삼각 함수는 내부 상태가 없으며, 같은 입력이면 항상 같은 출력을 보장한다.
다음은 불변성을 추구함으로서 생기는 함수형 프로그래밍의 장점을 나열해봤다
프로그램 검증이 쉽다
프로그램들이 오직 함수의 입력에 따라 영향을 받기 때문에 테스트 코드를 작성하기 쉽고, 프로그래머가 예측하지 못하는 시점에 변경될 수 있는 내부 상태가 없기 때문에 프로그램이 예측하기 쉽다
최적화가 가능
이전에 계산해두었던 함수값을 캐싱해두고 필요할때 사용할 수 있다. 이는 함수의 불변성이 보장되지 않으면 사용할 수 없는 최적화 방법
동시성 프로그램을 작성하기 쉽다
동시성 프로그램을 작성하기 힘든 이유는 여러 쓰레드들이 프로그램 상태를 공유하기 때문인데, 함수형 프로그래밍에서는 변경 가능한 상태를 원천적으로 배제하기 때문에, 프로그래머는 Lock과 Synchronization과 같은 문제에서 자유로울 수 있다.
함수를 변수 다루듯 가능
함수를 변수처럼 취급해서 함수 자체를 다른 함수에 인자로 넘겨주거나, 함수를 반환하는 함수를 정의할 수 있다
하지만 모든 것을 함수형 프로그래밍만으로 구현하긴 힘들다는 단점
함수형 프로그래밍에서는 반복을 위해 반복문을 쓰지 않고 재귀를 통해 이뤄지는데 일단 이게 쉽지 않다. 그리고 결국 이런 함수들을 조합해서 프로그램을 구성하는 것이 함수형 프로그래밍인데, 조합하는게 쉽지 않다.
Reference
https://engineering.linecorp.com/ko/blog/functional-programing-language-and-line-game-cloud/
'공부 > 그 외' 카테고리의 다른 글
EC2 인스턴스를 활용한 서버 구축 및 외부 접속 작업 (0) | 2024.07.14 |
---|---|
멀티바이트(Multibyte), 유니코드(Unicode), ANSI 그리고 ASCII (1) | 2022.09.23 |
객체 지향 프로그래밍(OOP) (0) | 2022.09.11 |
Visual Studio 문자 집합 사용(유니코드, 멀티바이트) (0) | 2021.12.08 |
C2678 : 이항 '~': 왼쪽 피연산자로 '~' 형식을 사용하는 연산자가 없거나 허용되는 변환이 없습니다. (0) | 2021.09.02 |