함수형 프로그래밍은 무엇인가요?
함수형 프로그래밍은 상태와 가변 데이터를 지양하고 순수 함수를 이용해여 프로그래밍하는 프로그래밍 패러다임중 하나입니다.
순수함수를 이용한다 하셨는데 이것은 무엇인가요?
순수함수는 수학적인 함수라고도 하는데요, 수학적인 함수와 프로그래밍에서 쓰이는 함수는 조금 다른 면이 있습니다. 수학적인 함수는 입력값에 따라서만 출력값이 정해집니다. 반면에 흔히 프로그래밍에서 쓰이는 함수는 입력값과 외부상태에 의해 출력값이 정해집니다. 따라서 순수함수는 입력값에 의해서만 출력값이 정해지는 함수입니다.
상태와 가변데이터를 지양한다고 하셨는데 이것은 무슨 의미인가요?
흔히 객체지향프로그래밍에서 사용하는 클래스안의 프로퍼티들이 상태가 될 수 있습니다. Student라는 class에서 name이라는 속성이 이 객체의 상태라고 할 수 있습니다. 이러한 상태들이 함수 밖에 외부 상태들인데 이것이 순수함수를 막는 요인이 됩니다. 그래서 이러한 상태를 지양하는 것입니다.
함수형 프로그래밍에 특징을 조금 더 자세히 말씀 해주시겠어요?
함수형 프로그래밍에서는 함수를 독립적인 유닛으로 바라보기 때문에 1급 객체입니다. 즉 변수에 저장할 수 있고 함수의 입력값이나 출력값으로 반환 될 수 있습니다. 함수가 입력값에만 영향을 받기 때문에 병렬 처리에 더 효과적입니다. 왜냐하면 병렬처리에서 가장 큰 문제가 되는 부분이 공유자원에 접근 하는 부분입니다. 하지만 함수형 프로그래밍은 애초에 상태를 갖지 않기 때문에 공유자원의 접근의 위험성 자체가 사라집니다.
함수형 프로그래밍의 단점도 있나요 ?
단점은 상태를 갖고 있지 않기 때문에 어떠한 액션을 수행할때 마다 상태(객체)를 생성해야합니다. 그래서 굉장히 많은 메모리를 요구합니다.
'cs' 카테고리의 다른 글
Swift 면접준비 자료구조편 (0) | 2021.08.03 |
---|---|
운영체제란? (0) | 2021.07.15 |
객체지향 프로그래밍이란? (0) | 2021.07.14 |