Nhảy đến nội dung chính

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