명령형 프로그래밍 스타일은 2005 년부터 2013 년까지 웹 개발에서 실행되었습니다.
명령형 프로그래밍으로 애플리케이션이 수행해야 할 작업을 단계별로 정확하게 나열한 코드를 작성했습니다.
함수형 프로그래밍 스타일은 함수를 결합하는 영리한 방법을 통해 추상화를 생성합니다.
답변에는 선언적 프로그래밍에 대한 언급이 있으며 선언적 프로그래밍에는 우리가 따라야 할 규칙이 나열되어 있다고 말할 것입니다. 그런 다음 애플리케이션에 초기 상태라고하는 것을 제공하고 이러한 규칙이 애플리케이션의 동작 방식을 정의하도록합니다.
이제 이러한 빠른 설명은 이해가되지 않을 것이므로 유추를 통해 명령형 프로그래밍과 선언적 프로그래밍의 차이점을 살펴 보겠습니다.
우리가 소프트웨어를 개발하지 않고 대신 생계를 위해 파이를 굽는다고 상상해보십시오. 아마도 우리는 나쁜 제빵사이며 맛있는 파이를 굽는 방법을 모릅니다.
그래서 우리의 상사는 우리에게 레시피로 알려진 방향 목록을 제공합니다.
레시피는 파이 만드는 법을 알려줄 것입니다. 하나의 레시피는 다음과 같이 명령형으로 작성됩니다.
- 밀가루 1 컵을 섞는다
- 계란 1 개 추가
- 설탕 1 컵 추가
- 냄비에 혼합물을 부어
- 팬을 오븐에 30 분 350도 동안 넣습니다.
선언적 레시피는 다음을 수행합니다.
밀가루 1 컵, 달걀 1 개, 설탕 1 컵-초기 상태
규칙
- 모든 것이 혼합되면 팬에 넣습니다.
- 모든 것이 섞이지 않으면 그릇에 넣으십시오.
- 팬에 모든 것이 있으면 오븐에 넣으십시오.
따라서 명령 방식은 단계별 접근 방식으로 특징 지워집니다. 1 단계부터 시작하여 2 단계 등으로 이동하십시오.
결국 최종 제품이 생깁니다. 이 파이를 만들면이 재료들을 섞어서 팬과 오븐에 넣고 최종 제품을 얻습니다.
선언적 세계에서는 그 차이가 다릅니다. 선언적 레시피에서는 레시피를 두 개의 개별 파트로 분리하고 변수와 같이 레시피의 초기 상태를 나열하는 하나의 파트로 시작합니다. 여기 변수는 재료의 양과 유형입니다.
우리는 초기 상태 또는 초기 재료를 사용하여 몇 가지 규칙을 적용합니다.
따라서 우리는 초기 상태를 취하여 대황 딸기 파이 등을 먹을 준비가 될 때 까지이 규칙을 반복해서 통과시킵니다.
따라서 선언적 접근 방식에서 이러한 규칙을 올바르게 구성하는 방법을 알아야합니다.
따라서 재료 또는 상태를 검사하고 싶을 때 규칙을 팬에 넣습니다.
초기 상태에서는 아직 재료를 섞지 않았기 때문에 일치하지 않습니다.
따라서 규칙 2는 그들이 섞이지 않으면 그릇에 섞어 말합니다. 예,이 규칙이 적용됩니다.
이제 우리 상태로 혼합 재료 한 그릇이 있습니다.
이제 새로운 상태를 다시 규칙에 적용합니다.
따라서 규칙 1은 재료가 혼합되어 냄비에 놓이면 규칙 1이 적용된다고 말합니다.
이제 우리는 재료가 혼합되어 팬에있는이 새로운 상태를 갖게되었습니다. 규칙 1은 더 이상 관련이 없으며 규칙 2는 적용되지 않습니다.
규칙 3은 재료가 냄비에 있으면 오븐에 넣고 규칙은이 새로운 상태에 적용되는 것입니다.
그리고 우리는 맛있는 핫 애플 파이 또는 다른 것으로 끝납니다.
지금, 당신이 나와 같다면, 왜 우리가 명령형 프로그래밍을하지 않는지 생각할 것입니다. 이것은 말이됩니다.
간단한 흐름은 가능하지만 대부분의 웹 응용 프로그램에는 명령형 프로그래밍 디자인으로는 제대로 캡처 할 수없는보다 복잡한 흐름이 있습니다.
선언적 접근 방식에서는 textInput=“”
단일 변수 와 같은 초기 성분 또는 초기 상태를 가질 수 있습니다 .
텍스트 입력이 빈 문자열로 시작될 수 있습니다.
우리는이 초기 상태를 응용 프로그램에 정의 된 일련의 규칙에 적용합니다.
사용자가 텍스트를 입력하면 텍스트 입력을 업데이트하십시오. 글쎄, 지금은 적용되지 않습니다.
템플리트가 렌더링되면 위젯을 계산하십시오.
- textInput이 업데이트되면 템플릿을 다시 렌더링하십시오.
글쎄,이 중 어느 것도 적용되지 않으므로 프로그램은 이벤트가 발생할 때까지 기다릴 것입니다.
따라서 어느 시점에서 사용자는 텍스트 입력을 업데이트 한 다음 규칙 번호 1을 적용 할 수 있습니다.
우리는 그것을 업데이트 할 수 있습니다 “abcd”
그래서 우리는 방금 텍스트와 textInput 업데이트를 업데이트했습니다. 규칙 번호 2는 적용되지 않습니다. 규칙 번호 3은 텍스트 입력이 업데이트되었는지를 나타냅니다. 방금 발생한 템플릿을 다시 렌더링 한 다음 템플릿을 다시 렌더링하면 규칙 2로 돌아갑니다. 위젯을 계산하면 위젯을 계산할 수 있습니다.
일반적으로 프로그래머로서 우리는보다 선언적인 프로그래밍 디자인을 위해 노력하고 싶습니다.
명령형이 더 명확하고 명백해 보이지만 선언적 접근 방식은 대규모 응용 프로그램에 매우 적합합니다.