Lập Trình Vibe
Vibe Coding là gì?
Lập trình Vibe là một phương pháp lập trình được hỗ trợ bởi AI do Andrej Karpathy giới thiệu vào năm 2024/2025. Với lập trình Vibe, bạn mô tả những gì bạn muốn bằng các prompt ngôn ngữ tự nhiên và thường thì mô hình ngôn ngữ lớn (LLMs) sẽ tạo ra phần lớn, thường là toàn bộ, mã hoạt động cho bạn. Nếu bạn có thời gian, hãy tham khảo Nghệ thuật Lập Trình Vibe được điều chỉnh bởi Rick Rubin để tìm hiểu thêm về con đường lập trình Vibe.
Một lợi thế lớn của phương pháp mới này là tính khả tiếp cận vì những người không có kinh nghiệm lập trình có thể xây dựng dự án trong khi các nhà phát triển có kinh nghiệm có thể nhanh chóng nguyên mẫu các ý tưởng mới trước khi cam kết hoàn toàn với chúng. Điều này đặc biệt hữu ích cho các startup. Điểm bất lợi là các nhà phát triển rất có thể sẽ không hiểu hoàn toàn mã mà AI tạo ra hoạt động như thế nào. Đối với các dự án phụ nhỏ, điều này ổn, nhưng đối với phần mềm ở mức sản xuất, nó có thể dẫn đến các vấn đề dài hạn và nợ kỹ thuật.
Có rất nhiều công cụ giúp việc lập trình Vibe mượt mà hơn. Cursor IDE, Claude Code CLI, GitHub Copilot, Loveable, Replit, v0 và những công cụ khác cho phép bạn làm việc với AI trực tiếp trong môi trường của mình hoặc cung cấp giao diện chuyên dụng cho lập trình Vibe. Cá nhân tôi chủ yếu dùng Cursor IDE và Claude Code CLI cho các dự án này.
Nhưng có một điều. Những công cụ và mô hình này tốn tiền. Với việc lập trình truyền thống, bạn chủ yếu trả bằng thời gian của mình. Với lập trình Vibe, bạn trả bằng ví tiền. Và nếu bạn không biết mình đang làm gì, bạn sẽ trả bằng cả ví tiền và thời gian. Mỗi dự án trên trang này tốn khoảng $10 đến $20 để xây dựng. Điều đó cộng lại nếu bạn thử nghiệm nhiều. Tôi thực sự nghĩ rằng khi các mô hình này cải thiện và trở nên hiệu quả hơn, chi phí sẽ giảm dần. Hiện tại, đó là điều đáng cân nhắc khi quyết định liệu lập trình Vibe có phù hợp cho dự án của bạn hay không.
Tò mò về những gì có thể thực hiện được, tôi đã thử lập trình Vibe tự mình và tạo trang này để khám phá chính nguyên lý thông qua các dự án thực tế. Tôi không chỉ xây dựng sản phẩm, tôi đang thử nghiệm và chứng minh những gì lập trình Vibe thực sự có thể làm. Điều này chỉ để vui, nhưng nó cho thấy một phần cách thức lập trình có thể trông như thế nào trong tương lai khi các mô hình này tiếp tục cải thiện.
Định lý Khỉ Vô hạn
Bạn đã bao giờ nghe về Định lý Khỉ Vô hạn? Đó là một thí nghiệm tư duy triết học nói rằng nếu bạn cho vô hạn số lượng khỉ vô hạn số máy đánh chữ và vô hạn thời gian, cuối cùng một trong số chúng sẽ tạo ra toàn bộ tác phẩm của Shakespeare chỉ bằng cách vô tình gõ phím.
Nghe có vẻ phi lý, phải không? Nhưng đây là điểm kỳ lạ. Lập trình Vibe giống như vậy, ngoại trừ thay vì khỉ chúng ta có các mô hình AI, thay vì máy đánh chữ chúng ta có ngôn ngữ lập trình, và thay vì Shakespeare chúng ta nhận được phần mềm hoạt động.
Hãy nghĩ về điều đó. Mô hình ngôn ngữ lớn được huấn luyện trên hàng tỷ dòng mã, các mẫu và ví dụ. Khi bạn đưa một prompt cho LLM, nó thực sự không “nghĩ” qua vấn đề của bạn từng bước như một lập trình viên con người sẽ làm. Thay vào đó, nó dự đoán token tiếp theo có khả năng xuất hiện nhất dựa trên các mẫu mà nó đã học trong quá trình huấn luyện. Về cơ bản nó đang đưa ra những phỏng đoán có cơ sở bằng cách tạo mã dựa trên những gì về mặt thống kê có vẻ đúng.
Và bằng cách nào đó, thường thì nó hoạt động. Mô hình xuất ra mã thực sự biên dịch, chạy và giải quyết vấn đề của bạn. Không phải thông qua sự hiểu biết, mà là qua khớp mẫu xác suất ở quy mô cực kỳ lớn. Nó như thể máy phát sinh văn bản ngẫu nhiên tinh vi nhất của vũ trụ đã tìm thấy câu trả lời “đúng”. Nhưng ở đây, khác biệt là về tốc độ. Những con khỉ đó sẽ cần vô hạn thực sự. AI của bạn? Đạt được điều đó trong vài giây hoặc vài phút.
Vì vậy theo một cách nào đó, khi bạn sử dụng lập trình Vibe, bạn đang khai thác hàng triệu dòng mẫu mã đã được chưng cất vào một mô hình để tạo ra các giải pháp. Đó không phải là giải quyết vấn đề có ý thức, mà là phép màu thống kê. Và đó chính xác là lý do tại sao nó mạnh mẽ và, thừa nhận, tại sao việc hiểu mã thực sự làm gì vẫn quan trọng.
Câu hỏi quan trọng hơn câu trả lời
Có một điều quan trọng thường bị bỏ qua. Lập trình Vibe không phải là về việc nhận được bất kỳ câu trả lời nào, mà là về việc đặt câu hỏi đúng. Hãy nghĩ về siêu máy tính Deep Thought từ Hướng dẫn Đi Vòng Ngân Hà cho Người Đi Nhờ Xe. Nó đã mất hàng triệu năm để tính toán câu trả lời cho câu hỏi tối thượng về cuộc sống, vũ trụ và mọi thứ, chỉ để cho bạn số 42. Câu trả lời về mặt kỹ thuật là đúng, nhưng vô dụng vì vấn đề thực sự là xác định câu hỏi cần hỏi ngay từ đầu.
Lập trình Vibe hoạt động theo cùng một cách. Prompt của bạn là tất cả, nhưng quản lý ngữ cảnh cũng vậy. Một prompt mơ hồ sẽ cho bạn mã mơ hồ, và nếu bạn không cung cấp các tệp, tài liệu hoặc ví dụ phù hợp làm ngữ cảnh, mô hình sẽ không hiểu bạn thực sự cần gì. Nếu bạn là người hiểu lập trình, kiến trúc và thiết kế hệ thống, bạn có thể soạn các prompt chi tiết và tuyển chọn ngữ cảnh phù hợp để hướng LLM đến các giải pháp xuất sắc. Nhưng nếu bạn không biết phải yêu cầu gì hoặc cung cấp ngữ cảnh gì, AI cũng sẽ không biết.
Đây thực ra là lý do tại sao lập trình Vibe lại mạnh mẽ đối với các nhà phát triển có kinh nghiệm. Chúng ta biết mã tốt trông như thế nào, hiểu được các cạm bẫy, và có thể viết các prompt để hướng mô hình tránh khỏi chúng. Đối với người mới bắt đầu không có nền tảng kỹ thuật, đây trở thành một giới hạn thực sự. Bạn có thể nhận được mã hoạt động, nhưng nếu không hiểu điều gì đã sai hoặc phải yêu cầu gì tiếp theo, bạn sẽ bị mắc kẹt.
Khi Lập trình Vibe không đủ
Các mô hình AI mới nhất thật ấn tượng, nhưng chúng không phải là viên đạn vàng. Lập trình Vibe có thể hoạt động trong sản xuất, nhưng chỉ khi bạn nghiêm túc với nó. Bạn cần các bài kiểm thử đơn vị vững chắc. Bạn cần các nguồn chân lý rõ ràng cho những gì hệ thống của bạn nên làm. Bạn cần phát hiện khi mọi thứ bị hỏng hoặc trôi dạt. Và bạn cần tư duy hacker. Suy nghĩ vượt ra ngoài khuôn khổ và cố gắng phá vỡ dự án lập trình Vibe của bạn theo những cách bất ngờ. Những trường hợp biên nào bạn chưa xem xét? Những lỗ hổng bảo mật nào có thể bị ai đó lợi dụng? Đây là điều phân biệt mã chỉ đơn thuần hoạt động với mã thực sự bền vững.
Nhưng có một điều nữa tôi học được. Đôi khi bạn chỉ cần kết thúc một phiên với AI và bắt đầu một phiên mới. Khi lịch sử hội thoại của bạn ngày càng lớn, hiệu năng của mô hình giảm sút. Nó mắc nhiều lỗi hơn, tạo ra mã ít mạch lạc hơn, và bắt đầu ảo giác (hallucinate) thường xuyên hơn. Nếu bạn không phát hiện và dừng lại, những lỗi này sẽ cộng dồn lên nhau, khiến mọi thứ ngày càng tồi tệ. Nó giống như cố gắng đọc một tài liệu đã được photocopy đi photocopy lại nhiều lần. Bắt đầu mới giữ mọi thứ sạch sẽ và sắc nét.
Dự án được Lập trình bằng Vibe
Dưới đây là hai dự án, stairs (repo) và transcendental (repo), tôi đã xây dựng bằng phương pháp luận của lập trình Vibe. Chủ yếu được tạo từ các prompt, công việc thủ công bị giới hạn ở việc cung cấp ngữ cảnh, gỡ lỗi và triển khai lên GitHub Pages. Chúng là những thử nghiệm trang tĩnh thú vị thể hiện những gì có thể xảy ra khi bạn kết hợp ý tưởng sáng tạo với mã thông qua lập trình Vibe. Cả hai đều được lưu trữ trên GitHub.