2 điểm bởi GN⁺ 2025-04-04 | 1 bình luận | Chia sẻ qua WhatsApp

Phê phán sự ngớ ngẩn của lập trình bằng ngôn ngữ tự nhiên

  • Ngay từ thời kỳ đầu của máy tính tự động, đã có những người không hài lòng với cách lập trình đòi hỏi hệ ký hiệu hình thức
  • Máy móc là “nô lệ trung thành” chỉ thực hiện đúng các lệnh được giao, nên ngay cả lỗi hiển nhiên cũng cứ thế được thực thi
  • Một số người kỳ vọng rằng thay vì bỏ qua lỗi và tiếp tục chạy, máy sẽ hành xử “hợp lý” hơn

Sự xuất hiện và phát triển của ngôn ngữ lập trình bậc cao

  • Ngôn ngữ máy được xem là một giao diện nguy hiểm vì hầu như không có phát hiện lỗi hay dư thừa bảo vệ
  • Vì vậy, các ngôn ngữ lập trình bậc cao đã ra đời, cùng với những tiến bộ như thông báo lỗi để ngăn ngừa kết quả sai
  • Tuy nhiên, lập trình vẫn đòi hỏi ký hiệu hình thức và vẫn cần độ chính xác tỉ mỉ

Lập luận ủng hộ việc lập trình bằng ngôn ngữ tự nhiên và phản biện đối với nó

  • Đã từng có lập luận rằng nếu điều khiển máy bằng ngôn ngữ tự nhiên thì người dùng sẽ thoải mái hơn
  • Lập luận này cho rằng khi máy trở nên phức tạp hơn, cách đó có thể hữu ích cho người dùng
  • Nhưng thay đổi giao diện không điều chỉnh việc phân chia công việc, mà ngược lại còn làm phát sinh thêm khối lượng hợp tác và giao tiếp
  • Trên thực tế, giao diện càng mở rộng thì khối lượng công việc ở cả hai phía thường càng tăng, khiến mọi thứ trở nên phức tạp hơn

Các ví dụ lịch sử về toán học và hệ ký hiệu

  • Toán học Hy Lạp cổ đại dừng lại ở cách tiếp cận thiên về ngôn ngữ và hình vẽ, nên sự phát triển bị đình trệ
  • Toán học Hồi giáo cũng bị gián đoạn vì không chấp nhận hệ ký hiệu
  • Châu Âu đã đạt được bước nhảy vọt nhờ những nhân vật như Vieta, Descartes, Leibniz và Boole đưa vào các hệ ký hiệu hình thức

Ưu điểm của ngôn ngữ hình thức và giới hạn của ngôn ngữ tự nhiên

  • Ngôn ngữ hình thức có thể ngăn ngừa nhiều lỗi chỉ với một vài quy tắc đơn giản
  • Ký hiệu hình thức giúp cả sinh viên cũng có thể thực hiện tư duy logic vốn trước đây chỉ những thiên tài mới làm được
  • Ngôn ngữ tự nhiên mơ hồ và dễ lẫn những lời vô nghĩa, nên không phù hợp cho biểu đạt logic không sai sót

Nếu ngôn ngữ tự nhiên là phương thức nhập/xuất duy nhất thì sao?

  • Nếu ngay từ đầu con người chỉ điều khiển máy bằng ngôn ngữ tự nhiên, cuối cùng chúng ta vẫn sẽ cần một quá trình “bootstrap” để quay lại hệ thống hình thức
  • Quá trình này có thể mất hàng nghìn năm, và rốt cuộc vẫn sẽ dẫn đến ngôn ngữ hình thức

Sự thoái lui trong giáo dục và hiện tượng “mù chữ kiểu mới”

  • Trong vài thập kỷ gần đây, do sự suy yếu của rèn luyện trí tuệ, nhiều người thậm chí không thể sử dụng đúng cả tiếng mẹ đẻ của mình
  • Hiện tượng tràn ngập những lời lẽ vô nghĩa trong các bài báo khoa học, báo cáo kỹ thuật và văn bản chính phủ là minh chứng cho điều đó
  • Hiện tượng này khiến người ta có thể dự đoán trước sự thất bại của lập trình bằng ngôn ngữ tự nhiên

Trực giác kết luận

  • Việc tạo ra một cỗ máy có thể được lập trình bằng ngôn ngữ tự nhiên sẽ khó chẳng kém gì việc sử dụng chính nó

1 bình luận

 
GN⁺ 2025-04-04
Ý kiến trên Hacker News
  • Có ý kiến cho rằng việc bênh vực LLMs (mô hình ngôn ngữ lớn) là điều “ngầu”

    • Ngược lại, có người tự hỏi sẽ ra sao nếu chuyển một dự án có độ phức tạp trung bình từ mã sang ngôn ngữ tự nhiên
    • Họ nghi ngờ liệu có thể mô tả đầy đủ hành vi và yêu cầu của mã nguồn hay không, và liệu mô tả bằng ngôn ngữ tự nhiên có dễ hiểu hơn không
    • Các bản trình diễn chủ yếu là ứng dụng đơn giản vì khó quản lý độ phức tạp và độ chính xác
    • Có lý do khiến thuật ngữ pháp lý không phải là tiếng Anh thông thường
  • Gợi nhớ đến một câu trích dẫn cũ của Hal Abelson

    • Khoa học máy tính không phải là khoa học, và cũng không liên quan nhiều đến máy tính
    • Cuộc cách mạng máy tính là cuộc cách mạng về cách tư duy và cách biểu đạt
    • Toán học cung cấp khái niệm chính xác về “cái gì”, còn tính toán cung cấp khái niệm chính xác về “làm thế nào”
  • Ngôn ngữ tự nhiên có những giới hạn bắt nguồn từ giới hạn nhận thức của con người

    • Với tư cách là lập trình viên, nhiều vấn đề hoặc sự phi lý chỉ trở nên rõ ràng sau khi triển khai mã
    • Việc mô tả chính xác bằng ngôn ngữ tự nhiên còn tốn nhiều thời gian hơn
  • Máy ngôn ngữ được xem là một giao diện nguy hiểm một cách không cần thiết

    • Các ngôn ngữ lập trình bậc cao đã được phát triển để giảm sai sót
    • Rust có lợi cho nhà phát triển vì chỉ ra lỗi một cách rõ ràng
    • LLMs tạo cảm giác giống một trò chơi đoán mò nửa vời có trí thông minh
    • Cách tiếp cận của Rust được ưa chuộng hơn
  • Thay vì tạo chương trình máy tính bằng ngôn ngữ tự nhiên, nó cần được thực thi trực tiếp

    • Có ví dụ về hệ thống đồ họa và chương trình cờ caro
    • Cũng cần có prompt cho hệ thống tệp và hệ điều hành đa nhiệm
    • Có kỳ vọng vào những tiến bộ như vậy vào đầu tháng 4 năm sau
  • Ngôn ngữ tự nhiên không phù hợp để truyền đạt quy tắc và mệnh lệnh

    • Vấn đề diễn giải luật pháp ở Mỹ được nêu làm ví dụ
    • Sự rõ ràng và tính trách nhiệm của ngôn ngữ máy tính tạo ra sự cân bằng
  • Ngôn ngữ cho một miền cụ thể cung cấp độ chính xác và rõ ràng mà ngôn ngữ tự nhiên không thể mang lại

    • Nếu làm ngược lại thì sẽ đòi hỏi nhiều công sức hơn
  • Forth, PostScript, Assembly là những ngôn ngữ lập trình “tự nhiên” phù hợp với môi trường thực thi mã

    • “Tự nhiên” ở đây là đang hỏi nó tự nhiên với con người hay với máy tính
    • AI không khiến ngôn ngữ của con người trở nên tự nhiên với máy tính
    • AI sẽ phát minh ra những ngôn ngữ phù hợp với chính môi trường của nó
  • Các phương pháp lập trình bậc cao sẽ bắt đầu trông giống ngôn ngữ lập trình hơn là ngôn ngữ tự nhiên

    • Nếu không muốn tự lập trình, thì cần có cách để chỉ dẫn một trí tuệ thực hiện việc lập trình
    • Cách chỉ dẫn ở cấp cao sẽ giống việc đào tạo hơn là dùng ngôn ngữ tự nhiên
  • Việc sai sót xuất hiện dưới dạng thông báo lỗi là một cải tiến lớn

    • Một số người lại thấy việc không thể bỏ qua thông báo lỗi còn phiền hơn
    • Khi đánh giá ưu điểm của ngôn ngữ lập trình, cũng có người đồng nhất “sự dễ dàng của lập trình” với sự dễ dàng để mắc lỗi