Sự phát triển của các Mô hình Ngôn ngữ Lớn (LLM) như ChatGPT và GitHub Copilot đang tạo ra một tác động phụ bất ngờ trong phát triển phần mềm. Các công cụ AI này hoạt động tốt hơn nhiều với các ngôn ngữ lập trình phổ biến như Python và JavaScript, khiến các lập trình viên từ bỏ những ngôn ngữ mới hơn hoặc chuyên biệt để chuyển sang những gì AI hiểu rõ nhất.
Vấn Đề Thống Trị Của Python
LLM cho thấy mức độ hiệu suất khác biệt đáng kể tùy thuộc vào ngôn ngữ lập trình mà chúng đang làm việc. Dữ liệu nghiên cứu cho thấy các mô hình này xuất sắc với những ngôn ngữ xuất hiện thường xuyên trong dữ liệu huấn luyện của chúng, trong khi gặp khó khăn đáng kể với các ngôn ngữ ít phổ biến hơn. Ngay cả những ngôn ngữ lập trình đã được thiết lập với hàng triệu người dùng cũng có hiệu suất LLM kém nếu chúng không được đại diện tốt trong quá trình huấn luyện AI.
Điều này tạo ra một chu kỳ đáng lo ngại. Các lập trình viên ngày càng chọn Python không phải vì nó là công cụ tốt nhất cho công việc cụ thể của họ, mà vì nó là ngôn ngữ mà trợ lý AI của họ có thể hỗ trợ hiệu quả nhất. Một lập trình viên đang làm việc trên một ngôn ngữ scripting mới đã lưu ý cách những người dùng tiềm năng hiện tại bác bỏ việc học các ngôn ngữ mới, nói rằng một LLM có thể chỉ cần tạo ra mã Python thay thế, ngay cả khi nó xấu hơn, dài gấp đôi và không hoạt động tốt bằng.
Hiệu suất LLM theo Ngôn ngữ Lập trình
- Hiệu suất Cao: Python , JavaScript , TypeScript (được đại diện tốt trong dữ liệu huấn luyện)
- Hiệu suất Thấp: Ngôn ngữ chuyên biệt theo lĩnh vực, ngôn ngữ mới hơn, ngôn ngữ thích hợp
- Phát hiện Nghiên cứu: Hiệu suất giảm mạnh khi các ngôn ngữ trở nên chuyên biệt hơn, ngay cả đối với những ngôn ngữ đã được thiết lập với hàng triệu người dùng
Các Ngôn Ngữ Chuyên Biệt Theo Lĩnh Vực Đang Bị Đe Dọa
Tác động mạnh nhất là đối với các Ngôn ngữ Chuyên biệt theo Lĩnh vực (DSL) - những ngôn ngữ lập trình chuyên biệt được thiết kế cho các nhiệm vụ cụ thể. Những ngôn ngữ này truyền thống mang lại những lợi thế lớn bằng cách làm cho một số loại chương trình nhất định dễ viết hơn nhiều và ít bị lỗi hơn. Ví dụ, một hệ thống đối thoại cho trò chơi điện tử có thể sử dụng một định dạng đơn giản, dễ đọc thay vì các lời gọi API dài dòng.
Tuy nhiên, các DSL phải đối mặt với gánh nặng kép trong kỷ nguyên LLM. Không chỉ các nhà thiết kế ngôn ngữ phải đầu tư thời gian và tài nguyên để tạo ra ngôn ngữ và các công cụ của nó, mà người dùng cũng phải hy sinh sự hỗ trợ AI khi làm việc với những ngôn ngữ chuyên biệt này. Điều này làm tăng đáng kể rào cản cho việc áp dụng ngôn ngữ mới.
Các Giải Pháp Mới Nổi và Sự Thích Ứng
Cộng đồng ngôn ngữ lập trình không từ bỏ mà không chiến đấu. Một số phương pháp tiếp cận đầy hứa hẹn đang nổi lên để thu hẹp khoảng cách giữa các ngôn ngữ chuyên biệt và khả năng LLM.
Một chiến lược liên quan đến việc sử dụng Python như một ngôn ngữ trung gian. Các nhà nghiên cứu đã tìm thấy thành công bằng cách yêu cầu LLM tạo ra mã trong các ngôn ngữ quen thuộc trước, sau đó tự động dịch nó sang các ngôn ngữ chuyên biệt. Phương pháp này tận dụng điểm mạnh của AI với các ngôn ngữ phổ biến trong khi vẫn cung cấp những lợi ích của thiết kế chuyên biệt theo lĩnh vực.
Một hướng khác tập trung vào việc tạo ra các ngôn ngữ hoạt động tốt hơn với quy trình phát triển có sự hỗ trợ AI. Một số nhà thiết kế đang khám phá cách kết hợp mã chính thức với các mô tả ngôn ngữ tự nhiên không chính thức, cho phép các lập trình viên viết những phần thú vị một cách thủ công trong khi để AI xử lý các kết nối thường lệ và mã boilerplate.
Các nhà nghiên cứu và thiết kế ngôn ngữ lập trình làm việc dưới giả định sai lầm rằng các nhà thực hành lập trình thực sự muốn 'một ngôn ngữ với cú pháp và ngữ nghĩa được điều chỉnh cho một lĩnh vực cụ thể', hoặc bất kỳ tính năng ngôn ngữ thực sự phức tạp nào cả.
Các Giải Pháp Mới Nổi cho Tích Hợp DSL-LLM
- Dịch Thuật Trung Gian Python: Tạo mã trong Python trước, sau đó tự động dịch sang các ngôn ngữ chuyên biệt
- Kết Nối Chính Thức-Không Chính Thức: Kết hợp việc viết mã thủ công cho logic phức tạp với mã boilerplate và kết nối được tạo bởi AI
- Tích Hợp Ngôn Ngữ Xác Minh: Sử dụng LLM để tạo mã với các đặc tả có thể được xác minh tự động
- Thiết Kế Ngữ Nghĩa: Tạo ra các DSL với cú pháp có thể đọc được bởi con người và có ý nghĩa mà LLM có thể hiểu tốt hơn
Nguy Cơ Trì Trệ
Mối quan tâm rộng hơn mở rộng ra ngoài chỉ các ngôn ngữ lập trình đến các framework và phương pháp phát triển. Những lực lượng tương tự đẩy các lập trình viên hướng về Python cũng đang ủng hộ các framework cũ, đã được thiết lập tốt hơn những đổi mới mới hơn. Điều này tạo ra một vòng lặp phản hồi nơi các lập trình viên con người dựa vào những gì LLM biết tốt nhất, trong khi LLM học chủ yếu từ những gì con người hiện đang viết.
Một số chuyên gia lo ngại điều này có thể đóng băng hoàn toàn sự tiến hóa của ngôn ngữ lập trình. Nếu các lập trình viên ngừng thử nghiệm với các tính năng ngôn ngữ mới vì các công cụ AI của họ không hiểu chúng, và các công cụ AI không bao giờ học những tính năng này vì các lập trình viên không sử dụng chúng, sự đổi mới có thể dừng lại hoàn toàn.
Nhìn Về Phía Trước
Bất chấp những thách thức này, có những lý do để lạc quan. LLM đang trở nên tốt hơn trong việc làm việc với cú pháp ngữ nghĩa, có thể đọc được bởi con người - gợi ý rằng các ngôn ngữ được thiết kế tốt với các từ khóa rõ ràng, có ý nghĩa thực sự có thể có lợi thế trong thế giới có sự hỗ trợ AI. Ngoài ra, khi việc huấn luyện LLM trở nên thường xuyên hơn và ít tốn kém hơn, độ trễ giữa việc các tính năng ngôn ngữ mới xuất hiện và các công cụ AI hiểu chúng sẽ giảm.
Chìa khóa có thể là nhận ra rằng các ngôn ngữ lập trình hiện tại cần phục vụ hai chủ nhân: các lập trình viên con người và trợ lý AI. Các ngôn ngữ tương lai thành công nhất có thể sẽ là những ngôn ngữ có thể thỏa mãn cả hai đối tượng mà không làm tổn hại đến những lợi ích cốt lõi làm cho các ngôn ngữ chuyên biệt trở nên có giá trị ngay từ đầu.
Cộng đồng thiết kế ngôn ngữ lập trình đang đối mặt với một thời điểm quan trọng. Những lựa chọn được thực hiện ngay bây giờ về cách thích ứng với sự hỗ trợ AI có thể quyết định liệu chúng ta sẽ thấy sự đổi mới tiếp tục trong cách chúng ta biểu đạt các ý tưởng tính toán, hay liệu chúng ta sẽ định cư trong một thế giới nơi mọi thứ được viết bằng Python đơn giản vì đó là những gì máy móc hiểu rõ nhất.
Tham khảo: Programming Language Design in the Era of LLMs: A Return to Mediocrity?