Mặc dù thuật ngữ không được chuẩn hóa, một cách phổ biến là phân loại các mô hình lập trình chính thành
- Thủ tục
- Chức năng
- Hợp lý
- Hướng đối tượng
- Chung
Bạn dường như đã biết lập trình thủ tục là như thế nào.
Trong các ngôn ngữ chức năng, các hàm được coi là các đối tượng hạng nhất. Nói cách khác, bạn có thể truyền một hàm làm đối số cho hàm khác hoặc một hàm có thể trả về hàm khác. Mô hình chức năng dựa trên tính toán lambda và các ví dụ về ngôn ngữ chức năng là LISP, Scheme và Haskel. Thật thú vị, JavaScript cũng hỗ trợ lập trình chức năng.
Trong lập trình logic, bạn xác định các vị từ mô tả mối quan hệ giữa các thực thể, chẳng hạn như president(Obama, USA)
hoặc president(Medvedev, Russia)
. Các vị từ này có thể trở nên rất phức tạp và liên quan đến các biến, không chỉ các giá trị theo nghĩa đen. Khi bạn đã chỉ định tất cả các vị từ của mình, bạn có thể đặt câu hỏi cho hệ thống của mình và nhận câu trả lời thống nhất về mặt logic.
Ý tưởng lớn trong lập trình logic là thay vì nói cho máy tính biết cách tính toán mọi thứ, bạn nói với nó những thứ đó là gì. Ví dụ: PRITAL.
Mô hình hướng đối tượng theo một số cách là một phần mở rộng của lập trình thủ tục. Trong lập trình thủ tục, bạn có dữ liệu của mình, có thể là các kiểu nguyên thủy, như số nguyên và số float, kiểu ghép, như mảng hoặc danh sách và kiểu do người dùng xác định, như cấu trúc. Bạn cũng có các thủ tục của bạn, hoạt động trên dữ liệu. Ngược lại, trong OO bạn có các đối tượng, bao gồm cả dữ liệu và thủ tục. Điều này cho phép bạn có những thứ tốt đẹp như đóng gói, kế thừa và đa hình. Ví dụ: Smalltalk, C ++, Java, C #.
Lập trình chung được giới thiệu lần đầu tiên trong Ada vào năm 1983 và trở nên phổ biến sau khi giới thiệu các mẫu trong C ++. Đây là ý tưởng mà bạn có thể viết mã mà không chỉ định các kiểu dữ liệu thực tế mà nó hoạt động và có trình biên dịch tìm ra nó. Ví dụ thay vì viết
void swap(int, int);
void swap(float, float);
....
bạn sẽ viết
void swap(T, T);
một lần, và trình biên dịch tạo mã cụ thể cho bất cứ điều gì T
có thể, khi swap()
thực sự được sử dụng trong mã.
Lập trình chung được hỗ trợ ở các mức độ khác nhau theo C ++, Java và C #.
Điều quan trọng cần lưu ý là nhiều ngôn ngữ, như C ++, hỗ trợ nhiều mô hình. Cũng đúng là ngay cả khi một ngôn ngữ được cho là hỗ trợ cho một mô hình cụ thể, nó có thể không hỗ trợ tất cả các tính năng của mô hình. Chưa kể rằng có rất nhiều sự bất đồng về việc các tính năng được yêu cầu cho một mô hình cụ thể.