////
Search
Duplicate

선언형과 함수형 프로그래밍 - 지명

선언형 프로그래밍

선언형 프로그래밍은 ‘무엇’을 할 것인지에 집중하는 프로그래밍 패러다임이다.
이에 반해 명령형 프로그래밍은 ‘어떻게’ 할 것인지를 설명한다.
예를 들어, 데이터베이스에서 정보를 검색하는 경우, 선언형 프로그래밍은 검색하려는 정보의 조건만 명시하면 컴퓨터가 어떻게 그 정보를 찾을지 알아서 처리하게 된다.
ex) SQL, HTML …

선언형 프로그래밍의 장단점

장점
코드가 직관적이며 가독성이 높다.
개발자가 ‘어떻게’ 를 걱정할 필요가 없으므로 개발이 단순화된다.
단점
선언형 프로그래밍은 컴퓨터에게 과정을 자동으로 처리하도록 맡기므로 성능 문제가 발생할 수 있다.
하드웨어에 대한 최적화가 어려울 수 있다.

함수형 프로그래밍

함수형 프로그래밍은 선언형 패러다임의 일종으로, 작은 순수 함수들을 블록처럼 쌓아 로직을 구현하고 고차 함수를 통해 재사용성을 높인 프로그래밍 패러다임이다.
순수 함수와 불변성을 중심으로 프로그램을 구성한다.
순수 함수
출력이 입력에만 의존하는 것을 의미한다. - 동일한 입력에 항상 동일한 출력
함수의 실행은 프로그램의 실행에 영향을 미치지 않아야 한다. (사이드 이펙트가 없다 - 오로지 출력만 수행한다.)
불변성
데이터가 한번 생성되면 그 상태가 변하지 않는 것을 의미한다.
고차 함수
함수를 매개변수로 받아 로직을 생성할 수 있는 함수를 말한다.
고차 함수를 사용하기 위해서는 해당 언어가 일급 객체라는 특징을 가져야 하는데, 그 특징은 다음과 같다.
변수나 메서드에 함수를 할당할 수 있다.
함수 안에 함수를 매개변수로 담을 수 있다.
함수가 함수를 반환할 수 있다.
ex) 자바스크립트의 배열 메서드, 리액트에서의 useState 등 상태 관리 …

함수형 프로그래밍의 장단점

장점
코드의 예측 가능성과 테스트 용이성이 높다.
불변성 때문에 병렬 처리에 적합하다.
단점
학습곡선이 높다. 일반적인 명령형 프로그래밍에 익숙한 개발자들에게는 이해하기 어려울 수 있다.

선언형 프로그래밍 vs 함수형 프로그래밍

선언형 프로그래밍은 결과에 집중하는 반면, 함수형 프로그래밍은 프로세스에 집중한다.