함수형 프로그래밍

Jun 2k (Jun2)·2023년 9월 21일

CS공부

목록 보기
4/8
post-thumbnail

함수형 패러다임

패러다임은 무엇을 해야 할지를 말하기보다 무엇을 해서는 안 되는지 말해준다.
- Clean Architcture

프로그램은 순차, 분기, 반복, 참조로 구성된다.

패러다임은 위 4가지 요소를 어떻게 이용할 것인지 다룸

객체지향 추상화의 최소 단위가 객체인 것처럼 함수형은 함수가 최소 단위
함수 단위이므로 재사용성이 높음
불변성을 지향하기에 동작 예측이 용이하고 사이드 이펙트 방지 가능
=> 이는 동시성 문제도 해결 가능
객체 지향은 제어 흐름의 간접적인 전환에 규율을 부과
함수형은 변수 할당에 규율을 부과


함수형 프로래밍의 장점

장점이 곧 단점이 된다

1. 상태가 없기 때문에 사이드 이펙트가 없다.

단점

상태가 없어서 변수가 조작이 안됨
데이터를 복사해서 교체하는 작업이 필요함 => 메모리 과사용

2. 재사용성이 높다.

단점

이를 위해 함수로 잘게 쪼개야 함 => 오히려 더 복잡해질 가능성 있음

3. 코드가 짧고 간결하다.

단점

숙련도가 필요함. 객체지향에 비해 어려움


선언형 프로그래밍

기존 명령형 프로그래밍은 문제를 어떻게 해결해야 하는지 컴퓨터에게 명령
선언형 프로그래밍은 무엇을 해결해야 할지에 집중, 해결 방법은 컴퓨터에 위임

명령형은 Control Flow를 따름
Goto, if / then / else, switch / case, for / while 등 사용
데이터를 제어

선언형은 Data Flow를 따름
Stateless, Recursion, Pipe 등을 사용
데이터를 제어하지 않고 필요한 함수로 제어


멀티 패러다임

JavaScript는 멀티 패러다임이 가능

굳이 객체지향과 함수형으로 나눌 필요 없음



😅 해당 내용은 공부하면서 정리한 글입니다. 틀린 부분이나 오해하고 있는 부분이 있다면 피드백 부탁드립니다.

관련레퍼런스

함수형사고 책

profile
유리프트 프론트엔드

0개의 댓글