https://medium.com/@cscalfani/so-you-want-to-be-a-functional-programmer-part-1-1f15e387e536
함수형 프로그래밍이라는 단어를 '나는 프로그래머' 팟캐스트의 임백준씨를 통해 듣게 되었다. 함수형? 절차형? 객체지향? 내가 알던 프로그래밍 언어가 아닌 새로운 것이 나왔나보다 생각했다.
그러다 미디엄을 둘러보다 함수형 프로그래밍 소개글이 있어서 읽어봤다.
함수형 프로그래밍의 가장 큰 특징은 'Purity' 이다. 함수의 순수성을 유지하는 것이다. 객체지향에서의 함수는 상태를 변화시키는 행동이다. 그래서 상태를 변화시킨다. 하지만 함수형 프로그래밍에서 함수는 상태를 변화시키는 등의 side effetct가 없는 로직을 가지고 있다.
예를 들면, 두 개의 숫자를 더하는 함수는 객체의 상태를 변화시키지 않고 두 숫자를 Input 받아서, 두 숫자의 합을 Output 한다.
function add(a, b){
return a+b;
}
이런 Purity를 가지면, 어떤 점이 좋을까? 바로 저장된 데이터를 함부로 변화시키지 못하게 보호할 수 있다는 점이다. 단어로 말하면 Immutability (불변성). 함수의 side effect가 적다라고도 말할 수 있다.
데이터가 잘못 변화된 버그가 발생했다면, 과연 어느 함수에서 데이터를 변화시켰는지 추적하기란 참 힘들다. 멀티스레딩을 많이 사용하는 프로그램이라면, 더욱 힘들 것이다.
함수형 프로그래밍에서는 저장된 데이터를 복사해서 변화시킨 값을 반환한다. 그래서 기존 저장된 데이터 변화를 최대한 막을 수 있다.
함수형 프로그래밍의 큰 특징. 데이터의 Immutability를 위해 함수는 Purity하게 만든다.
'공부노트' 카테고리의 다른 글
Windows Subsystem for Linux(WSL) 은 어떻게 동작할까? (0) | 2020.09.20 |
---|---|
전기적 컴퓨팅 - 컴퓨터 역사 (0) | 2020.01.27 |
이전의 컴퓨터들 모습 - 컴퓨터 역사 (0) | 2020.01.27 |
WebComponent 와 Vue JS (0) | 2019.06.08 |
Git으로 파일을 관리하면 파일 용량이 커질까? (0) | 2019.06.06 |