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

2024. 7. 15. 15:09면접을 위한 cs 전공지식 노트/프로그래밍 패러다임

선언형 프로그래밍

 

선언형 프로그래밍은 '무엇'을 할 것인지에 집중하는 프로그래밍 패러다임이다.

이에 반해 명령형 프로그래밍은 '어떻게' 할 것인지를 설명한다.

예를 들어, 데이터베이스에서 정보를 검색하는 경우, 선언형 프로그래밍은 검색하려는 정보의 조건만 명시하면

컴퓨터가 어떻게 그 정보를 찾을지 알아서 처리하게 된다.

 

ex) SQL, HTML ...

 

 

 

 

 

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

 

장점

  • 코드가 직관적이며 가독성이 높다.
  • 개발자가 '어떻게'를 걱정할 필요가 없으므로 개발이 단순화된다.

 

단점

  • 선언형 프로그래밍은 컴퓨터에게 과정을 자동으로 처리하도록 맡기므로 성능 문제가 발생할 수 있다.
  • 하드웨어에 대한 최적화가 어려울 수 있다.

 

 

 

 

함수형 프로그래밍

 

함수형 프로그래밍은 선언형 패러다임의 일종으로, 작은 순수 함수들을 블록처럼 쌓아 로직을 구현하고

고차 함수를 통해 재사용성을 높인 프로그래밍 패러다임이다.

순수 함수와 불변성을 중심으로 프로그램을 구성한다.

 

  • 순수 함수
    • 출력이 입력에만 의존하는 것을 의미한다. - 동일한 입력에 항상 동일한 출력
    • 함수의 실행은 프로그램의 실행에 영향을 미치지 않아야 한다.
      (사이드 이펙트가 없다 - 오로지 출력만 수행한다.)
  • 불변성
    • 데이터가 한번 생성되면 그 상태가 변하지 않는 것을 의미한다.

 

ex) 자바스크립트의 배열 메서드, 리액트에서의 useState등 상태 관리..

 

 

 

 

 

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

 

장점

  • 코드의 예측 가능성과 테스트 용이성이 높다.
  • 불변성 때문에 병렬 처리에 적합하다.

 

단점

  • 학습곡선이 높다. 일반적인 명령형 프로그래밍에 익숙한 개발자들에게는 이해하기 어려울 수 있다.

 

 

 

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

 

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