Các nhà phát triển tranh luận liệu LLM có thực sự mang lại những trừu tượng lập trình mới hay chỉ là tự động hóa tinh vi

Nhóm Cộng đồng BigGo
Các nhà phát triển tranh luận liệu LLM có thực sự mang lại những trừu tượng lập trình mới hay chỉ là tự động hóa tinh vi

Khẳng định gần đây của Martin Fowler rằng các Mô hình Ngôn ngữ Lớn đại diện cho một sự thay đổi cơ bản trong trừu tượng lập trình đã gây ra cuộc tranh luận sôi nổi trong cộng đồng các nhà phát triển. Trong khi Fowler so sánh tác động của LLM với quá trình chuyển đổi từ ngôn ngữ assembly sang các ngôn ngữ lập trình bậc cao, cộng đồng vẫn chia rẽ sâu sắc về việc liệu điều này có đại diện cho trừu tượng thực sự hay chỉ là tự động hóa tiên tiến.

So sánh Tiến hóa Ngôn ngữ Lập trình:

  • Từ Assembly đến Ngôn ngữ Bậc Cao: Đã giới thiệu các câu lệnh, điều kiện, vòng lặp, biến có tên
  • Hạn chế Ban đầu: Fortran IV thiếu mệnh đề ELSE, yêu cầu quy ước đặt tên biến cụ thể
  • Cải tiến Hiện đại: Cấu trúc khối, lập trình hàm, nhưng vẫn giữ mô hình giao tiếp cơ bản như cũ
  • Sự Khác biệt của LLM: Giới thiệu trừu tượng hóa không xác định cùng với giao diện bậc cao hơn

Tranh cãi về tính xác định

Một trong những điểm gây tranh cãi nhất trong cuộc thảo luận tập trung xung quanh bản chất phi xác định được cho là của LLM. Nhiều nhà phát triển cho rằng đặc tính này là gây hiểu lầm, chỉ ra rằng LLM có thể hoạt động một cách xác định khi được cấu hình đúng cách. Bằng cách đặt tham số nhiệt độ về không và sử dụng các seed máy sinh số ngẫu nhiên cố định, các nhà phát triển có thể đạt được kết quả đầu ra nhất quán qua nhiều lần chạy. Thực tế kỹ thuật này thách thức tiền đề trung tâm của Fowler rằng lập trình với LLM đòi hỏi phải chấp nhận tính phi xác định cơ bản.

Cuộc tranh luận mở rộng ra ngoài các thông số kỹ thuật đến những câu hỏi triết học về điều gì tạo nên phát triển phần mềm đáng tin cậy. Một số nhà phát triển bày tỏ lo ngại về việc từ bỏ hành vi xác định để đổi lấy những lợi ích không chắc chắn, trong khi những người khác lập luận rằng tính phi xác định không nhất thiết là vấn đề khi nó phục vụ các mục đích cụ thể như cải thiện độ chính xác hoặc hiệu suất.

Cấu hình tính xác định của LLM:

  • Thiết lập nhiệt độ: 0 để có đầu ra xác định
  • Seed RNG cố định: Bắt buộc để có kết quả nhất quán
  • Phiên bản mô hình: Phải được cố định (ví dụ: gemma3n:e4b digest: 15cb39fd9394 )
  • Có thể đạt được kết quả tương tự trên các thiết bị và cấu hình GPU khác nhau

Hạn chế của lập trình ngôn ngữ tự nhiên

Cộng đồng đã nêu ra những lo ngại đáng kể về việc sử dụng ngôn ngữ tự nhiên như một giao diện lập trình, với nhiều người tham khảo lời phê bình kinh điển của Edsger Dijkstra về lập trình ngôn ngữ tự nhiên từ nhiều thập kỷ trước. Vấn đề cốt lõi vẫn không thay đổi: ngôn ngữ tự nhiên thiếu độ chính xác cần thiết cho phát triển phần mềm đáng tin cậy. Không giống như các ngôn ngữ lập trình chính thức nơi mỗi thuật ngữ có một ý nghĩa cụ thể, không mơ hồ, ngôn ngữ tự nhiên dựa vào ngữ cảnh và cách diễn giải.

Điều bị nhiều người bỏ qua và được làm nổi bật trong bài viết là: không có cách nào để 'chính xác' với ngôn ngữ tự nhiên. 'Định nghĩa hoạt động' của độ chính xác liên quan đến tính hình thức.

Hạn chế này trở nên đặc biệt rõ ràng trong môi trường nhóm nơi việc giao tiếp sai lầm đã phổ biến giữa các chuyên gia thảo luận về những thay đổi phần mềm. Nhiều nhà phát triển báo cáo rằng các ngôn ngữ có cấu trúc vẫn là cách hiệu quả nhất để tránh hiểu lầm và đảm bảo triển khai chính xác.

Trừu tượng so với tự động hóa

Một bất đồng cơ bản đã xuất hiện về việc liệu LLM đại diện cho trừu tượng thực sự hay tự động hóa tinh vi. Các nhà phê bình lập luận rằng trừu tượng thực sự đòi hỏi ngữ nghĩa rõ ràng và chi tiết triển khai chính xác, điều mà LLM hiện tại thiếu. Họ cho rằng điều mà mọi người thấy thú vị về LLM chủ yếu là khía cạnh tự động hóa chứ không phải bất kỳ hình thức trừu tượng mới nào.

Sự phân biệt này quan trọng bởi vì các trừu tượng lập trình truyền thống xây dựng dựa trên nhau theo những cách có thể dự đoán, cho phép các nhà phát triển tạo ra các hệ thống phần mềm đáng tin cậy. Ngược lại, LLM hoạt động giống như các công cụ tìm kiếm tạo ra phản hồi dựa trên các mẫu dữ liệu huấn luyện, mà không nhất thiết hiểu các khái niệm cơ bản hoặc duy trì tính nhất quán qua các truy vấn tương tự.

Tác động tương lai đối với phát triển phần mềm

Bất chấp những lời phê bình, một số nhà phát triển thấy tiềm năng trong LLM cho phát triển phần mềm, đặc biệt nếu công nghệ phát triển vượt ra ngoài việc tạo văn bản đơn giản. Các đề xuất bao gồm huấn luyện các mô hình trên các quy trình biên dịch mã, dấu vết thực thi, và các đặc tả chính thức để tạo ra các hệ thống hiểu không chỉ mã trông như thế nào, mà nó thực sự làm gì.

Cuộc thảo luận cũng đề cập đến việc liệu LLM nên tạo mã bậc cao hay nhảy trực tiếp đến việc tạo bytecode. Hầu hết các nhà phát triển ủng hộ việc duy trì mã có thể đọc được bởi con người cho mục đích xem xét và gỡ lỗi, mặc dù một số hình dung một tương lai nơi ngôn ngữ tự nhiên trực tiếp tạo ra các chương trình có thể thực thi.

Cuộc tranh luận cuối cùng phản ánh những câu hỏi rộng lớn hơn về tương lai của lập trình và liệu sự tiện lợi của các giao diện ngôn ngữ tự nhiên có biện minh cho những đánh đổi về độ chính xác và độ tin cậy đã truyền thống định nghĩa phát triển phần mềm.

Tham khảo: LLMs bring new nature of abstraction