선언적 작성 SQL
은 명령형 프로그래밍 에서 매우 인기가있는 것 같습니다 . 그러나 Declarative 를 작성 Prolog
하면 많은 복잡성을 줄일 수 있지만 이것은 그리 일반적이지 않습니다.
Prolog보다 SQL을 선호하는이 역사적 선례가 있습니까?
그 이유가 명령형 언어에 의한 기본 지원이 부족한 경우, 언어 작성자가 Prolog
처음 에 기본적으로 지원하는 것이 왜 유용하지 않은지 대답 할 수 있습니까?
특정 예를 제공하려면 다음을 수행하십시오.
예제 1
대출 응용 프로그램을 평가하는 것은 몇 줄의 코드 만있는 쿼리 Prolog
처럼 SELECT/JOIN
몇 줄의 코드 SQL
만있을 수 있지만 장점은 분명하지 않습니다 SQL
.
예제 2
다음은 Prolog의 또 다른 예제 문제점 과 솔루션입니다. 다음 구속 조건 논리 프로그램은 교사로서 john의 역사에 대한 단순화 된 데이터 세트를 나타냅니다 .
teaches(john, hardware, T) :- 1990 ≤ T, T < 1999.
teaches(john, software, T) :- 1999 ≤ T, T < 2005.
teaches(john, logic, T) :- 2005 ≤ T, T ≤ 2012.
rank(john, instructor, T) :- 1990 ≤ T, T < 2010.
rank(john, professor, T) :- 2010 ≤ T, T < 2014.
다음 목표 절은 요한 모두 가르쳐 찾기 위해 데이터 집합을 쿼리 로직을 하고 있었다 교수 :
:- teaches(john, logic, T), rank(john, professor, T).
결과:
2010 ≤ T, T ≤ 2012.
위의 예 SQL
에서 동일한 결과를 얻는 것이 쉽습니다 . 그러나이 데이터가에 있다고 가정합니다 Array
. 그런 다음를 사용하여 동일한 결과를 얻는 것은 쉽지 않습니다 SQL
. 그리고 배열에 저장된 데이터의 경우 Prolog 코드를 작성하고 유지 관리하기가 더 쉽다고 생각합니다.