Trong khoa học máy tính, lập trình khai báo (tiếng Anh: declarative programming) là một mẫu hình lập trình theo phong cách xây dựng cấu trúc và các yếu tố của chương trình máy tính để thể hiện tính logic của sự tính toán mà không mô tả luồng điều khiển của nó.[1]

Hầu hết các ngôn ngữ áp dụng kiểu này cố gắng giảm thiểu hoặc loại bỏ hiệu ứng lề bằng cách mô tả những gì chương trình phải hoàn thành về mặt miền vấn đề (problem domain), thay vì mô tả cách hoàn thành nó như thế nào như một chuỗi các thành phần cơ bản của ngôn ngữ lập trình[2] (còn như thế nào thì tùy thuộc vào hiện thực của ngôn ngữ). Điều này ngược với lập trình mệnh lệnh vốn hiện thực các giải thuật theo từng bước rõ ràng.

Lập trình khai báo thường xem chương trình như là lý thuyết của một logic hình thức, và tính toán như là suy luận trong không gian logic đó. Lập trình khai báo có thể giúp đơn giản hóa rất nhiều cho việc viết chương trình song song.[3]

Ngôn ngữ khai báo phổ biến bao gồm các ngôn ngữ truy vấn cơ sở dữ liệu (như SQL, XQuery), biểu thức chính quy, lập trình logic, lập trình hàm, và hệ thống quản lý cấu hình.

Định nghĩa sửa

Lập trình khai báo thường được định nghĩa như kiểu lập trình không phải mệnh lệnh.

Mẫu hình con sửa

Lập trình khai báo là một thuật ngữ chung (umbrella term) bao gồm một số mẫu hình lập trình nổi tiếng hơn.

Lập trình ràng buộc sửa

Lập trình ràng buộc mô tả mối quan hệ giữa các biến dưới dạng các ràng buộc để chỉ ra thuộc tính của giải pháp đích. The set of constraints is solved by giving a value to each variable so that the solution is consistent with the maximum number of constraints. Constraint programming often complements other paradigms: functional, logical, or even imperative programming.

Ngôn ngữ miền chuyên biệt sửa

Các ví dụ nổi tiếng về Ngôn ngữ miền chuyên biệt (domain-specific language, hay DSL) bao gồm yacc, QML, Make, Puppet, biểu thức chính quy, và một tập con của SQL (như câu lệnh truy vấn SELECT).

Ngôn ngữ lai sửa

Lập trình logic sửa

Ngôn ngữ lập trình logic như Prolog mô tả và truy vấn các quan hệ.

Xem thêm sửa

Tham khảo sửa

  1. ^ Lloyd, J.W., Practical Advantages of Declarative Programming
  2. ^ Declarative language in The Free On-line Dictionary of Computing, Editor Denis Howe.
  3. ^ “DAMP 2009: Workshop on Declarative Aspects of Multicore Programming”. Cse.unsw.edu.au. ngày 20 tháng 1 năm 2009. Truy cập ngày 15 tháng 8 năm 2013.

Liên kết ngoài sửa