Lập trình khai báo

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ó.

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 (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.

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
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
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
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
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

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

Xem thêm
 Danh sách các ngôn ngữ lập trình khai báo
 So sánh các mẫu hình lập trình
 Lập trình quy nạp (Inductive programming)

Tham khảo

Liên kết ngoài

 Frans Coenen. Characteristics of declarative programming languages. 1999.
Robert Harper.
What, If Anything, Is A Declarative Language?. 2013.
There Is Such A Thing As A Declarative Language, and It’s The World’s Best DSL. 2013.
 Olof Torgersson. A Note on Declarative Programming Paradigms and the Future of Definitional Programming. 1996.

 
Mẫu hình lập trình