# Lập trình khai báo(declarative) và Lập trình mệnh lệnh(imperative) Lập trình khai báo(declarative) và Lập trình mệnh lệnh(imperative) là hai **phong cách lập trình** khác nhau — chúng phản ánh **cách bạn mô tả công việc mà máy tính cần thực hiện** ### **I. Lập trình khai báo(declarative)** - **Bạn nói cho máy tính biết *bạn muốn đạt được gì***. - Tập trung vào **cái gì** là kết quả cuối cùng. - Máy tính sẽ tự lo cách thực hiện. ``` # Declarative (giống kiểu functional programming) result = [x * 2 for x in data if x > 10] ``` Hoặc ví dụ quen thuộc hơn: ``` SELECT * FROM users WHERE age > 18; ``` Bạn không nói “lặp qua từng dòng, kiểm tra tuổi”, mà chỉ nói “hãy lấy dữ liệu theo điều kiện”. ### **II. Lập trình mệnh lệnh(imperative)** - **Bạn nói cho máy tính biết *từng bước phải làm gì***. - Tập trung vào **cách** để đạt được mục tiêu. - Ví dụ: viết một vòng lặp `for`, gọi hàm này rồi hàm kia, kiểm tra điều kiện… ``` # Imperative result = [] for x in data: if x > 10: result.append(x * 2) ``` Bạn phải quản lý từng bước cụ thể. ### **III. Trong LangGraph thì sao?** LangGraph **kết hợp cả hai phong cách**: - Bạn **khai báo các node và mối quan hệ giữa chúng** (kiểu **Lập trình khai báo(declarative)** – giống vẽ sơ đồ luồng). - Nhưng bên trong mỗi node, bạn viết **các bước cụ thể xử lý dữ liệu** (kiểu **Lập trình mệnh lệnh(imperative)** – như viết hàm bình thường). Ví dụ: ``` builder.add_node("process", process_input) # declarative def process_input(state): # imperative return {"output": state["input"].upper()} ``` ### Tóm lại: LangGraph giúp bạn tận dụng **sức mạnh kết hợp**: vừa dễ hình dung (declarative), vừa dễ điều khiển (imperative).
Phong cáchBạn mô tả...Ưu điểmNhược điểm
ImperativeCÁCH máy tính phải làmKiểm soát chi tiếtDễ rối với quy trình phức tạp
DeclarativeCÁI GÌ bạn muốn đạt đượcGọn, dễ hiểuKhó kiểm soát từng bước nhỏ
Tác giả: Đỗ Ngọc Tú Công Ty Phần Mềm [VHTSoft](https://vhtsoft.com "Công Ty Phần Mềm VHTSoft")