2009-09-23 4 views
3

프로그래밍, 선언적 및 필수 패러다임의 두 가지 주요 패러다임을 연구하고 있습니다. 내 교과서와 위키 피 디아에서 작성된 모호한 진술을 따르는 데 어려움을 겪고 있습니다. 예 :선언적 프로그래밍 및 명령형 프로그래밍

선언 : - 컴퓨터가 할 일에 중점을 둡니다. 에 초점을 맞추고 "어떻게"컴퓨터가 그것을해야 - : 은 - 필수가

는 제어 흐름없이 - "부작용" 무료입니다. - 동작 시퀀스 측면에서 수행하는 방법

두 프로그래밍 패러다임을 어떻게 구분할 수 있습니까? 위에서 작성한 진술을 확장 할 수 있다면 매우 유용 할 것입니다.

답변

7

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 

하나는 명시 적으로 제어 흐름이다 인 반면,, 이고, 인 경우는 일 수있다. 이들은 선언적 언어로 나타나지 않을 것입니다.

3

HTML과 웹 브라우저는 각각 각 패러다임의 좋은 예입니다. HTML (및 CSS)은 입니다. 선언문은입니다. 웹 브라우저에 을 입력하면을 표시 할 수 있지만 은 표시하지 않으려면 어떻게해야합니까?. 다시 말해, <h1>My title</h1>과 같은 코드 라인은 웹 브라우저 에 무엇을 표시 할 것인가?은 "내 제목"이라는 텍스트가있는 머리글 태그입니다. 그러나 실제로 화면에 실제로 그릴 방법을 설명합니다.

그러나 웹 브라우저는 일반적으로 필수 사항 방식으로 작성됩니다. 이러한 선언적 마크 업 정의를 사용하고 실질적으로 컴퓨터 이 화면에 해당 요소를 그리는 방법을 지시합니다.

5

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

자바의 일부 명령형 프로그래밍 :

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

선언적 프로그래밍이 없습니다 : 당신은 위의 순서 밖으로을 할 경우, 그것은 널 포인터 예외가 발생할 것이라고

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"); 

주 또는 질서, 단지 선언.여기

은 간단한 예입니다 -이 XML 조각이 선언으로 간주 될 수 :

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

그것은 고객 객체가 내장 취득 방법에 대해 얘기하지 않는, 그냥 부품을 선언합니다. 위의 해석 및 실행 방법은 프로그래밍 환경에 달려 있습니다.