HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
📝
학습 TIL
/
📝
N일차 배운 것 정리
/
📝
10일차 배운 것 정리
📝

10일차 배운 것 정리

목차

목차1. 명령형 프로그래밍과 선언형 프로그래밍1-1. 명령형 프로그래밍이란1-2. 선언형 프로그래밍이란1-3 예시를 통한 선언형 프로그래밍의 장점

1. 명령형 프로그래밍과 선언형 프로그래밍

1-1. 명령형 프로그래밍이란

컴퓨터가 수행할 명령들을 순서대로 써 놓은 것
  • 명령형 프로그래밍은 “어떻게 구현하는가" 에 포커스
  • 우리집은 어떻게 가? 주차장 북쪽 출구를 나와 왼쪽으로 가세요. 12번가 출구에 도착할 때까지 15번 북쪽 도로를 타세요. 이케아를 끼고 우회전하세요. 직진하여 첫 번째 신호등에서 우회전 하세요. 다음 신호등을 지나 좌회전을 하세요. 우리 집은 #298입니다.
 

1-2. 선언형 프로그래밍이란

컴퓨터가 무엇을 해야하는 지 결과를 나타내는 것
  • 실제 코드가 어떻게 동작되는지는 알 수 없다. 단 우리가 원하는 모습으로 동작이 이루어짐
  • 선언형 방식 (WHAT)  : 내 주소는 98 West Immutable Alley, Eden, Utah 84310입니다.
  • 선언형 방식이 동작하기 위해서는 명령형으로 “어떻게"가 구현된 것들이 추상화 되어 있어야만한다.
    • 고차함수 map, filter, reduce 등이 대표적인 추상화 구현 함수
 
대표적인 사례
  • HTML, SQL 쿼리문, CSS
 
선언형프로그래밍의 장점
  • 새로운 요구사항 및 유지보수에 큰 장점.
    • map, filter, reduce등 기본함수가 동일하여 “무엇”에 해당하는 부분만을 바꾸어 재사용가능하다!
    • 명령형프로그래밍에서는 모든 코드가 제각기이기 때문에 확장성을 가지기 어렵다.

1-3 예시를 통한 선언형 프로그래밍의 장점

예시1. Double 함수
  • 명령형 프로그래밍
    • for문, result.push : 어떻게 처리해야하는지를 묘사
      function double(arr){ let result = []; for(let i = 0; i < arr.length; i++){ result.push(arr[i] * 2) } return result } double([1,2,3]) // [2,4,6]
  • 선언형 프로그래밍
    • number ⇒ number * 2 : 무엇을 해야하는지, 원하는 결과만을 선언
      function double(arr){ return arr.map(number => number * 2) }
 
예시2. type검사 추가 상황 시
  • 함수형 프로그래밍
    • 타입을 검사하는 과정을 추가함
  • 선언형 프로그래밍
    • filter(param => typeof param === "number"): 원하는 타입만을 찾는 것을 선언
      function double(arr){ return arr.filter(param => typeof param === "number") .map(number => number * 2) } double([1,2,'str',udnefined,3) => ([2,4,6])
예시3. 토글버튼 만들기
  • 함수형 프로그래밍
    • 선언형 프로그래밍
     
    출처:
    https://boxfoxs.tistory.com/430