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

Trong tin học, **mẫu hình lập trình** là một kiểu lập trình *kiểu có tính mẫu hình* trong tiến hành về công nghệ phần mềm.

Một mẫu hình lập trình cung cấp (xác định) quan điểm  người lập trình có về sự thực thi của chương trình. Ví dụ: trong lập trình hướng đối tượng, các lập trình viên có thể xem một chương trình như là một tập hợp của các đối tượng có tính tương tác, trong khi đó, trong lập trình chức năng, nó là một chương trình có thể được xem như là một chuỗi các đánh giá của các hàm vô thức.

Các nhóm khác nhau trong công nghệ phần mềm đề xướng các *phương pháp* khác nhau, các ngôn ngữ lập trình khác nhau tức là các *mẫu hình lập trình* khác nhau. Một số ngôn ngữ được thiết kế để hỗ trợ một mẫu hình đặc thù (Java hỗ trợ lập trình hướng đối tượng trong khi Haskell hỗ trợ lập trình chức năng). Số ngôn ngữ khác lại hỗ trợ nhiều mẫu hình (như Python và Common Lisp).

Một số mẫu hình lập trình cấm các thao tác mà chính ngôn ngữ đó có. Chẳng hạn, lập trình cấu trúc không cho phép sử dụng lệnh `goto`.

Quan hệ giữa các mẫu hình lập trình và các ngôn ngữ lập trình có thể phức tạp vì một ngôn ngữ có thể hỗ trợ nhiều mẫu hình lập trình. Ví dụ như C++ được thiết kế để hỗ trợ các phần tử của lập trình thủ tục, lập trình hướng đối tượng và lập trình tiêu bản.

Mặc dù vậy, những người thiết kế và những người lập trình quyết định làm thế nào để xây dựng một chương trình dùng các phần tử của mẫu hình. Người ta có thể viết một chương trình hoàn toàn theo kiểu lập trình thủ tục trong C++, cũng có thể viết chương trình hoàn toàn hướng đối tượng, hay viết chương trình có các phần tử của cả hai

## Các mẫu hình lập trình
*Lập trình cấu trúc- so sánh với Lập trình không cấu trúc (*unstructured programming*)
*Lập trình mệnh lệnh (*imperative programming*), so sánh với Lập trình khai báo (*declarative programming*)
*Lập trình truyền báo (*message passing programming*), so sánh với Lập trình mệnh lệnh (*imperative programming*)
*Lập trình thủ tục (*procedural programming*), so sánh với Lập trình chức năng (*functional programming*)
*Lập trình bậc giá trị (*value-level programming*), so sánh với Lập trình bậc chức năng (*function-level programming*)
*Lập trình điều khiển theo luồng (*flow-driven programming*), so sánh với Lập trình điều khiển theo sự kiện (*event-driven programming*)
*Lập trình vô hướng (*scalar programming*), so sánh với Lập trình mảng (*array programming*)
*Lập trình cưỡng chế (*constraint programming*), so sánh với Lập trình Logic (*logic programming*)
*Lập trình định hướng đối tượng (*[[:en:Software componentry|component-oriented programming]])* (như OLE)
*Lập trình định dạng (*aspect-oriented programming*) (như AspectJ)
*Lập trình ký hiệu (*symbolic programming*) (như Mathematica)
*Lập trình định hướng bảng (*table-oriented programming*) (như FoxPro của Microsoft)
*Lập trình ống (*pipeline programming*) (như dòng lệnh UNIX)
*Lập trình hậu đối tượng (*post-object programming*)
*Lập trình định hướng chủ thể (*subject-oriented programming*)
*Lập trình phản xạ (*reflective programming*)
*Lập trình dòng dữ liệu (*[[:en:Dataflow|dataflow programming]]*) (như các Bản chiết tính hay *spreadsheet*)

## Hỗ trợ đa mẫu hình

## Tham khảo

## Xem thêm
* Ngôn ngữ mô tả kiến trúc
* So sánh các mẫu hình lập trình
* Ngôn ngữ đặc trưng miền
* Kho trí tuệ
* Ngôn ngữ lập mô hình
* Mẫu hình
* Miền lập trình
* Tính đầy đủ Turing

## Đọc thêm
## Liên kết ngoài

* Programming paradigms
* Programming languages 
* Classification of the principal programming paradigms