문제

나는 프로그래밍, 선언적이고 명령적인 패러다임의 두 가지 주요 패러다임을 연구하고 있습니다. 나는 교과서와 위키 백과에 대한 모호한 진술을 따르는 데 어려움을 겪고 있습니다.

선언 : - 컴퓨터가해야 할 "무엇"에 중점을 둡니다. - "부작용"이 없습니다 - 제어 흐름없이

필수 : - 컴퓨터가해야 할 "방법"에 중점을 둡니다. - 일련의 행동 측면에서 수행하는 방법

두 개의 프로그래밍 패러다임을 어떻게 구별 하시겠습니까? 위의 진술을 확장 할 수 있다면 매우 도움이 될 것입니다.

도움이 되었습니까?

해결책

SQL은 고전적인 선언 언어입니다. "이 테이블을보고 이러한 기준을 충족하는 모든 행을주십시오"라고 말합니다 (실제에서는 조인을 사용하고 목록을 선택하지만 동일한 기본 문자입니다). 위에서 언급했듯이,이 진술은 컴퓨터에 원하는 방법이 아니라 원하는 것을 알려줍니다.

내부적으로 데이터베이스 시스템은 C와 같은 언어로 구현되며 SQL 쿼리는 다음과 같은 명령 단계로 변환됩니다.

while (another row to process)
    read row from disk
    for (every test)
        if (test fails)
            continue to next row
    add row to result-set

여기에 주목해야 할 주요 사항 중 하나는 명시 적 제어 흐름입니다. 동안, ~을 위한, 그리고 만약에. 이것들은 선언적 언어로는 나타나지 않습니다.

다른 팁

명령 적 프로그래밍은 기본 상태를 조작 할 수있는 진술을 순차적으로 실행합니다.

Java의 일부 명령 프로그램 :

Customer customer = null;

// first create a customer and have the variable reference it
customer = new Customer(); 
// the state of the customer variable has changed

// set the id on whatever object is *currently* being referenced by the variable
customer.setId(1);
// the state of the Customer object has changed

customer.setFirstName("Bob");
customer.setLastName("McBob");

위의 순서대로 수행하면 널 포인터 예외가 발생합니다.

Customer customer = null;
customer.setFirstName("Foo");   // the customer variable is still null at this point
customer = new Customer();   // too late!

선언 프로그래밍에는 상태 나 명령이 없으며 선언이 있습니다.

간단한 예는 다음과 같습니다.이 XML 스 니펫은 선언적으로 간주 될 수 있습니다.

<NewCustomers>
  <Customer>
    <Id>1</Id>
    <FirstName>Bob</FirstName>
    <LastName>McBob</LastName>
  </Customer>
</NewCustomers>

고객 객체가 어떻게 구축되는지에 대해서는 이야기하지 않고 단지 부품을 선언합니다. 위의 해석 및 실행 방법은 프로그래밍 환경에 달려 있습니다.

HTML 및 웹 브라우저는 각각 각 패러다임의 좋은 예입니다. HTML (및 CSS)은입니다 선언 언어 - 웹 브라우저에 알려줍니다 무엇 표시하지만 그렇지 않습니다 어떻게 그것을하기 위해. 다시 말해, 코드 라인과 같은 라인 <h1>My title</h1> 웹 브라우저에 알려줍니다 무엇 표시하려면 - "내 제목"텍스트가 포함 된 헤더 태그 - 이제 실제로 화면에 페인트하는 방법.

그러나 웹 브라우저는 일반적으로 피할 수 없는 방법. 선언적 인 마크 업 정의가 필요하고 실제로 컴퓨터를 지시합니다. 어떻게 이러한 요소를 화면에 그리려면.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top