선언적 프로그래밍 패러다임 과 절차 적 프로그래밍 패러다임 의 차이점은 무엇입니까 ? 몇 가지 예를 들어 주시겠습니까?
다른 프로그래밍 패러다임은 무엇입니까?
답변:
절차 적 또는 객체 지향 프로그래밍 패러다임 과 같은 명령형 프로그래밍 패러다임에는 여러 하위 패러다임이 있습니다.
명령형 프로그래밍 패러다임에서는 다양한 추상화 수준에서 알고리즘을 단계별로 설명합니다.
절차 적 패러다임을 지원하는 프로그래밍 언어의 예 :
일반적으로 기본 유형에서 파생 유형으로 메서드와 상태를 모두 상속하는 유형 의 계층 구조 를 나타내는 언어를 나타내지 만 특이한 프로토 타입 기반 JavaScript도 포함합니다.
OO 패러다임을 지원하는 프로그래밍 언어의 예 :
기능적 또는 논리 프로그래밍 패러다임과 같은 선언적 프로그래밍 패러다임에는 여러 하위 패러다임이 있습니다.
선언적 프로그래밍 패러다임에서는 결과 또는 목표를 설명하고 " 블랙 박스 " 를 통해이를 얻습니다 . 명령 의 반대입니다 .
선언적 프로그래밍 패러다임을 지원하는 프로그래밍 언어의 예 :
함수형 프로그래밍은 부작용이없고 변경 가능한 상태가없는 함수의 적용을 강조합니다. 위의 선언적 시스템은 함수형 프로그래밍의 특정 측면을 보여줍니다.
선언적 기능 패러다임을 지원하는 프로그래밍 언어의 예 :
선언적 프로그래밍은 방법을 말할 필요없이 원하는 것을 말하는 곳입니다. 절차 적 프로그래밍에서는 결과를 얻기 위해 정확한 단계를 지정해야합니다.
예를 들어 SQL은 쿼리가 결과를 생성하는 단계를 지정하지 않기 때문에 절차 적보다 선언적입니다.
실제 예를 들어 보겠습니다. 차 한 잔이 필요합니다.
절차 :
선언적 :
절차 적 언어에서는 전체 프로세스를 정의하고이를 수행하는 단계를 제공합니다. 주문을 제공하고 프로세스가 제공되는 방식을 정의하기 만하면됩니다.
선언적 언어에서는 명령 또는 순서를 설정하고 해당 순서를 완료하는 방법을 시스템에 표시합니다. 어떻게해야하는지 파헤 치지 않고 결과 만 있으면됩니다.
절차 적 프로그래밍 :
절차 적 프로그래밍에서 프로그램이 시작되면 일련의 명령을 따릅니다. 지침은 일부 파일 또는 메모리 콘텐츠에 따라 변경 될 수 있지만 전반적으로 크게 다르지는 않습니다. 프로그램에 대한 입력은 일반적으로 실시간 사용자 입력이 아니라 미리 수집 된 데이터 세트에서 발생합니다.
선언적 프로그래밍 :
선언적 이벤트 기반 프로그래밍에서 프로그램이 수행 할 수있는 선택적 작업을 통해 데이터 본문을 중앙 집중화합니다. 예를 들어 워드 프로세서의 각 "이벤트"는 데이터, 문서에 영향을주는 마우스 또는 키보드 (또는 파일) 변경 사항입니다. 어떤 순서로도 수행 할 필요가 없습니다. 이벤트 기반 프로그래밍은 모두 공통 데이터 집합에서 작동하는 작은 프로그램 (이벤트 처리기)의 형태를 취하므로 각 작은 프로그램은 동일한 데이터 (이 예제의 문서)를 사용할 수 있습니다.
이 개 프로그래밍 언어 사이의 주요 차이점은, 절차 적 프로그래밍에서, 우리는 컴퓨터에게 어떻게 문제를 해결하는 방법과 선언적 프로그래밍에, 우리는 컴퓨터에게 무엇을 우리가 해결하려는 문제.
ansible 주석을 다루고 둘의 차이점 사이의 예를 제공 할 수 있습니다. Ansible은 puppet 또는 terraform과 같은 것이 선언적인 절차 적입니다. 예를 들어 ansible yaml 파일을 생성하여 다음과 같이 10 개의 ec2 인스턴스를 배포합니다.
-ec2 : count : 10 image : ami-058c6e5b73b074cd2 instance_type : t2.micro
해당 파일을 두 번 실행하면 20 개의 t2.micro ec2 인스턴스가 생성됩니다. terraform과 같은 선언적 언어로 동등한 것을 작성하고 두 번 실행하면 몇 번 실행하더라도 10 개의 t2.micro 인스턴스 만 실행됩니다. 선언적 언어는 종료 상태를 지정합니다. 절차 적 언어는 현재 또는 과거 상태에 관계없이 사용자가 말하는대로 수행합니다.
그래서 YAML은 선언적 프로그래밍 언어입니까? 실제 논리를 작성하는 대신 원하는 것을 정의하기 때문입니다.
구성 관리 도구 인 Ansible을 아는 사람이 있으면 YAML을 사용하지만 여전히 절차 적 언어 범주에 속하기 때문에 이것을 묻습니다.
절차 적 접근 방식에서는 결과를 얻기 위해 지침을 인코딩합니다. 선언적 접근 방식에서는 문제 해결에 대한 지식으로 해결해야 할 사항을 정의합니다. 두 가지 접근 방식에서 구현 한 절차 적 또는 선언적 접근 방식 예제를 살펴보십시오 .
예에서 볼 수 있듯이 선언적 접근 방식에서는 문제 해결 방법을 지시 할 필요가 없습니다.