Có vẻ như viết Tuyên ngôn SQL
rất phổ biến trong Lập trình mệnh lệnh . Tuy nhiên, dường như việc viết Tuyên bố Prolog
có thể tiết kiệm rất nhiều sự phức tạp nhưng điều này không phổ biến lắm.
Có tiền lệ lịch sử nào cho ưu tiên rõ ràng này của SQL so với Prolog không?
Nếu lý do là thiếu sự hỗ trợ bản địa của các ngôn ngữ mệnh lệnh , thì có thể trả lời tại sao những người tạo ngôn ngữ không thấy hữu ích khi hỗ trợ Prolog
ban đầu không?
Để cung cấp một số ví dụ cụ thể:
Ví dụ 1
Đánh giá một ứng dụng cho vay có thể chỉ là một vài dòng mã Prolog
, giống như SELECT/JOIN
truy vấn chỉ là một vài dòng mã SQL
, nhưng có vẻ như lợi thế không rõ ràng như SQL
.
Ví dụ 2
Đây là một vấn đề ví dụ khác và giải pháp trong Prolog. Chương trình logic ràng buộc sau đây biểu thị một tập dữ liệu đơn giản về lịch sử của john với tư cách là một giáo viên:
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.
Mệnh đề mục tiêu sau đây truy vấn bộ dữ liệu để tìm hiểu khi john vừa dạy logic và là giáo sư :
:- teaches(john, logic, T), rank(john, professor, T).
Kết quả:
2010 ≤ T, T ≤ 2012.
Trong ví dụ trên, sẽ dễ dàng SQL
để có được kết quả tương tự. Nhưng giả sử rằng bạn có dữ liệu này trong một Array
. Sau đó, không dễ dàng để có được kết quả tương tự bằng cách sử dụng SQL
. Và trong trường hợp dữ liệu được lưu trữ trong một mảng, tôi tin rằng mã Prolog sẽ dễ viết và duy trì hơn.