LLM gặp khó khăn với các ngôn ngữ lập trình ít phổ biến khi "Vibe Coding" đối mặt với thực tế

Nhóm Cộng đồng BigGo
LLM gặp khó khăn với các ngôn ngữ lập trình ít phổ biến khi "Vibe Coding" đối mặt với thực tế

Cộng đồng lập trình đang có cuộc tranh luận sôi nổi về những giới hạn của việc lập trình hỗ trợ bởi AI sau khi thí nghiệm vibe coding bằng Atari BASIC của một lập trình viên đã phơi bày những khoảng trống đáng kể trong các mô hình ngôn ngữ hiện tại. Thuật ngữ vibe coding ám chỉ việc viết code không có cấu trúc, dựa vào AI để tạo ra các chương trình hoạt động từ những mô tả lỏng lẻo.

Sự phụ thuộc vào dữ liệu huấn luyện trở thành điểm yếu rõ ràng

Thí nghiệm này đã tiết lộ một hạn chế cơ bản: LLM chỉ hoạt động tốt với những ngôn ngữ có dữ liệu huấn luyện phong phú trên mạng. Các ngôn ngữ phổ biến hiện đại như JavaScript , Python , và Go hoạt động mượt mà với sự hỗ trợ của AI, nhưng những ngôn ngữ cũ hơn hoặc ít phổ biến như Atari BASIC , x87 assembly , và các nền tảng chuyên biệt gặp khó khăn đáng kể. Các thành viên cộng đồng làm việc với hệ thống cũ báo cáo tỷ lệ lỗi quá cao khiến vibe coding trở nên không thực tế.

Một lập trình viên ghi nhận kinh nghiệm của họ với WebGPU và WGSL , nơi LLM liên tục tạo ra buffer với các flag sai và trộn lẫn các ngôn ngữ shader khác nhau. Những vấn đề tương tự xuất hiện với cú pháp Go assembly , nơi AI đổ lỗi cho ngôn ngữ thay vì thừa nhận những hạn chế của chính nó.

Ngôn ngữ lập trình theo chất lượng hỗ trợ AI

  • Tỷ lệ thành công cao: JavaScript , Python , Go , Java , C
  • Kết quả hỗn hợp: TypeScript (vấn đề logic nghiệp vụ), Elixir (đang cải thiện)
  • Hiệu suất kém: Atari BASIC , x87 Assembly , WebGPU/WGSL , Go Assembly , Pike , Snobol4

Kinh nghiệm vẫn cần thiết để thành công

Bất chấp sự cường điệu tiếp thị xung quanh việc AI thay thế lập trình viên, sự đồng thuận của cộng đồng rất rõ ràng: vibe coding hoạt động tốt nhất khi bạn đã biết mình đang làm gì. Các lập trình viên có kinh nghiệm có thể phát hiện lỗi, cung cấp ngữ cảnh phù hợp, và hướng dẫn AI đến những giải pháp đúng. Người mới bắt đầu cố gắng học thông qua sự hỗ trợ của AI thường kết thúc bằng việc bối rối hơn là được giúp đỡ.

Vibe coding thành công nhất xảy ra khi các lập trình viên đối xử với AI như một lập trình viên junior - cung cấp yêu cầu chi tiết, chia nhỏ nhiệm vụ thành những phần nhỏ, và duy trì sự giám sát cẩn thận. Cách tiếp cận này có thể tăng tốc phát triển, nhưng nó còn xa so với cuộc cách mạng lập trình tự động mà một số người đã dự đoán.

Kiểm tra thực tế cho các tuyên bố về AGI

Những hạn chế được phơi bày bởi thí nghiệm này đóng vai trò như một bài kiểm tra thực tế cho các tuyên bố về trí tuệ nhân tạo tổng quát sắp tới. Các mô hình vẫn phụ thuộc rất nhiều vào việc biến đổi công việc hiện có của con người thay vì lý luận hoặc sáng tạo thực sự. Khi đối mặt với các nhiệm vụ ngoài dữ liệu huấn luyện của chúng, chúng thất bại theo những cách tiết lộ bản chất cơ bản của chúng như những hệ thống khớp mẫu.

Đó là bằng chứng tuyệt đối rằng chúng vẫn là những máy dự đoán ngu ngốc, hoàn toàn dựa vào loại nội dung mà chúng đã được huấn luyện. Chúng không thể tổng quát hóa (chưa) và nếu bạn muốn sử dụng chúng cho những thứ mới lạ, chúng sẽ thất bại thảm hại.

Cuộc thảo luận của cộng đồng làm nổi bật một sự phân biệt quan trọng giữa những minh chứng ấn tượng và tính hữu dụng thực tế. Trong khi LLM có thể tạo ra code hoạt động cho các nhiệm vụ phổ biến, chúng gặp khó khăn với loại hiểu biết sâu sắc cần thiết cho những thách thức lập trình phức tạp hoặc bất thường.

Những Hạn Chế Chính Của Các LLM Hiện Tại Trong Lập Trình

  • Phụ thuộc nặng nề vào tính khả dụng của dữ liệu huấn luyện
  • Không thể suy luận về các khái niệm lập trình không quen thuộc
  • Gặp khó khăn với các nền tảng ngách và hệ thống cũ
  • Trộn lẫn cú pháp lỗi thời và hiện tại cho các ngôn ngữ đã tồn tại lâu đời
  • Phá vỡ logic nghiệp vụ để đáp ứng yêu cầu kiểm thử

Cuộc tranh luận giữa công cụ và cây đũa thần

Có lẽ quan sát sâu sắc nhất từ cộng đồng là sự phân biệt giữa công cụ và cây đũa thần. LLM là những công cụ mạnh mẽ có thể nâng cao năng suất cho các lập trình viên có kỹ năng, nhưng chúng không phải là những giải pháp kỳ diệu loại bỏ nhu cầu về kiến thức lập trình. Giống như bất kỳ công cụ nào, chúng đòi hỏi kỹ năng và kinh nghiệm để sử dụng hiệu quả.

Thế hệ hiện tại của các trợ lý lập trình AI xuất sắc trong các nhiệm vụ thường ngày, tạo boilerplate, và làm việc trong các mẫu đã được thiết lập tốt. Tuy nhiên, chúng không đạt yêu cầu khi cần giải quyết vấn đề thực sự, quyết định kiến trúc, hoặc làm việc với các công nghệ không quen thuộc. Điều này cho thấy rằng trong khi AI sẽ tiếp tục bổ trợ công việc lập trình, việc thay thế hoàn toàn các lập trình viên con người vẫn là một triển vọng xa vời.

Tham khảo: I tried vibe-writing in BASIC and it didn't go well