명령형 프로그래밍과 선언형 프로그래밍이란 무엇입니까?



둘을 해독하자
선언적 프로그래밍과 비교하여 명령형 프로그래밍이란 무엇입니까? 이것이 어떻게 작동하는지에 대한 많은 논리적 예가 있습니다. 이 두 가지에 대한 가장 일반적인 설명은 명령형은 어떤 작업을 수행하는 방법이고 선언형은 원하는 작업입니다. 이러한 예는 프로그래밍이 처음이거나 숙련된 엔지니어인 경우 명확하지 않을 수 있습니다. 그래서 나는 둘 사이의 차이점에 대해 깊이 파고들고 싶습니다. 대부분의 전문 엔지니어는 컴퓨터처럼 생각할 때 명령형 프로그래밍을 설명합니다. 여기서 선언적은 프로그래밍 구문을 보다 사용자 친화적으로 만듭니다. 대표적인 예는 Vanilla JavaScript와 ReactJS의 차이점입니다. 아래에서 살펴보겠습니다.

이 예는 JavaScript에서 목록을 만들고 DOM에 추가하는 방법입니다. 로 보는 것은
강제 실행 방법. 특정 순서로 단계별로 만들어집니다. 모든 단계가 완료되면 결과를 얻습니다.


// Vanilla JavaScript

addButton.addEventListener(click, function() {

 const input = document.getElementById(item-input);

 console.log(input.value);

 const list = document.getElementById(ingredient-list);

 const createList = document.createElement(li);

 const textNode = document.createTextNode(input.value);

 createList.appendChild(textNode);

 list.appendChild(listNode);

});


이제 아래의 이 예를 살펴보십시오. 본질적으로 같은 방식이지만 React는 후드 아래에서 대부분의 더러운 작업을 처리합니다. 여기에서는 stateful 값을 반환하는 메서드인 useState 과 이를 업데이트하는 함수를 사용하고 있습니다. 이 구문은 모든 추가 단계를 생략합니다. Vanilla JavaScript와 비교할 때 React는 둘 사이의 선언적 구문입니다.

//ReactJS

/*In ReactJS, the UI is already 
set to keep the entire state 
of your listed items in a JS variable.*/

const [items, setItems] = useState([cilantro, beef, Onions]);

/*Which will then be displayed in 
JSX by mapping (looping) over each item, 
and returning a list element for each one:*/

<ul>

   {items.map(item => (

       <li key={item}>{item}</li>

   ))}

</ul>


보시다시피 다른 단계에서도 동일한 결과가 나타납니다. 이제 명령형 프로그래밍과 선언형 프로그래밍이 무엇인지 알게 되셨기를 바랍니다. 따라서 이 읽기가 끝났다고 생각하기 전에 다른 측면으로 넘어가겠습니다. 이 블로그의 제목으로 돌아가 보겠습니다. 명령형 프로그래밍과 선언형 프로그래밍은 정확히 무엇입니까? 가장 큰 논쟁은 선언적 구문이 "사용자 친화적"이라는 것입니다. 그래? 나는 그 의견을 주장하고 싶다. 예를 들어 Vanilla JS는 작업을 실행하기 위해 더 많은 이니셔티브 단계를 수행할 수 있습니다. 이것이 사실일 수도 있지만, Reacts 구문에는 이벤트 리스너, 배열에 대한 매핑 또는 사용자가 만들고 조작하기로 결정한 모든 구성 요소를 수행하기 위한 상당한 양의 작업이 포함되어 있습니다.
제 생각에는 단순함이 항상 더 좋은 것은 아닙니다. 특정 상황에서 JS와 React를 모두 활용할 수 있습니다. 이 주제는 다른 프로그래밍 언어도 설명할 수 있습니다. 어떤 면에서 JavaScript의 일부를 선언적으로 결정할 수도 있습니다. 배열을 반복하거나 forEach를 사용하여 선언적이지 않은 객체를 순환합니까? 프로그램에서 원하는 것을 정확하게 말하고 있습니다. 나는 선언적 언어가 명령형으로 할 수 있는 것처럼 후드 아래에서 정점을 찍을 수 없기 때문에 불리할 수 있다고 주장할 수도 있습니다. 내 연구에서 어떤 명령형 및 선언적 프로그래밍이 공개 토론이 될 수 있는지 결정합니다. 두 가지에 대한 귀하의 의견을 알려주십시오. 이 두 가지를 자신의 말로 어떻게 해독하겠습니까?

좋은 웹페이지 즐겨찾기