Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[ 2주차 생각 과제 ] 명령형 프로그래밍과 선언형 프로그래밍 #9

Merged
merged 1 commit into from
Mar 15, 2024

Conversation

Yeonseo-Jo
Copy link
Contributor

✨ 구현 기능 명세

  • 생각 과제

💎 PR Point

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

🖤 명령형 프로그래밍과 선언형 프로그래밍에 대하여 여러분의 생각을 마음껏 작성해주세요

1️⃣ 명령형 프로그래밍과 선언형 프로그래밍은 무엇일까?

(1) 명령형 프로그래밍 (Imparative Programming) ⇒

✨How✨

  • 프로그램의 상태와 상태를 변경시키는 구문의 관점에서 연산을 설명하는 프로그래밍 패러다임의 일종
  • 즉, 컴퓨터가 수행할 명령들을 순서대로 써 놓은 것
  • 예시 ) 배열을 파라미터로 받고, 각 요소들의 값에 2를 곱하는 함수를 명령형으로 작성
    // 명령형 방식
    function double(arr) {
      let results = [];
      for (let i = 0; i < arr.length; i++) {
        results.push(arr[i] * 2);
      }
      return results;
    }

(2) 선언형 프로그래밍 (Declarative Programming)

✨What✨

  • 원하는 결과를 묘사하는 방식으로 코드를 작성하는 프로그래밍 패러다임의 일종
  • 장점 :
    • 한 눈에 읽을 수 있어 가독성이 높다
    • 상황에 독립적이어서 재사용하기 쉽다.
    • 참조 투명성 : 해당 언어에서 문제가 발생해도 다른 것에 영향을 주지 않는다.
  • 예시 ) 배열을 파라미터로 받고, 각 요소들의 값에 2를 곱하는 함수를 선언형으로 작성
// 선언형 방식
function double(arr) {
  return arr.map((item) => item * 2);
}

⇒ javascript 내장 함수 map을 통해 같은 기능을 수행한 예시이다. map의 내부가 어떻게 되어 있는지 모르지만, map 내부에 집중함으로써 상태 변경에 대한 직접적인 간섭 없이 ‘무엇’이 일어날지에 집중하는, 선언형 방식의 코드이다.

⇒ 위 예시에서 볼 수 있듯이 선언형 프로그래밍은 명령형 프로그래밍의 추상화(Abstraction)이다.


2️⃣ 각각의 방식을 따르는 언어는 무엇이 있을까?

(1) 명령형 프로그래밍

  • 포트란
  • ALGOL
  • C언어
  • Pascal

(2) 선언형 프로그래밍

  • SQL
  • HTML & XML
  • Prolog
  • Haskell

3️⃣ 각각의 방식은 어떤 상황/유형에 쓰는 것이 적합할까?

명령형 혹은 선언형 프로그래밍 중 어느 하나만이 정답이 아니라, 해결하고자 하는 문제의 성격, 요구사항 등을 고려해 각 상황에 맞는 방식을 선택해야 한다.

명령형 프로그래밍은 프로그램의 세부적인 제어 흐름을 결정할 수 있어 정확한 결과를 얻을수 있다. 따라서 정확도가 중시되는 상황에서는 제어 흐름을 명시하는 명령형 프로그래밍 방식이 더 적절하다 생각한다.

반면 선언형 프로그래밍은 추상화를 통해 상황에 독립적이며 내부 상태 변경에 대해 직접적인 영향을 주지 않기 때문에, 유지보수가 잦고 재사용이 필요한 상황 및 프로젝트에 쓰기 적절한 방식이라 생각한다.


4️⃣ JavaScript 에서는 어떤 방식을 선택하는 것이 좋을까?

상황에 따라 다르겠지만, javascript를 사용할 때 명령형 보다 선언형 방식으로 더 자주 쓰는것 같다.

특히 프로젝트 구현에는 유지보수 및 재사용이 중요하기 때문에 추상화를 사용하는 선언형 방식을 더 선호하는 편이다.

또한 코드의 가독성도 중요하다 생각하여, 캡슐화 및 추상화를 사용하여 보다 읽기 쉬운 코드를 짜도록 노력하는 편이다.


🥺 소요 시간, 어려웠던 점

  • 1h
  • ~ 부분에서 이래서 시간을 얼만큼 썼어요..

🌈 구현 결과물

.md 파일로 첨부했습니당

@Yeonseo-Jo Yeonseo-Jo self-assigned this Oct 27, 2023
@nayujin-dev
Copy link
Member

이거시 명예의 전당 웨비 ,, 본받아야지 수고많앗오!!!

Copy link
Member

@SooY2 SooY2 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

마자 나도 자바스킈립트에선 데이터 다루는 일을 주로 하니까 선언형이 더 좋을거같다고 생각했어!!

@Yeonseo-Jo Yeonseo-Jo merged commit 254f4dc into main Mar 15, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants