Lập trình theo cảm hứng

Hình thu nhỏ

Lập trình theo cảm hứng là gì?

Lập trình theo cảm hứng 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 theo cảm hứng, bạn mô tả điều mình muốn bằng các lời nhắc ngôn ngữ tự nhiên và thường thì các mô hình ngôn ngữ lớn (LLM) sẽ tạo ra phần lớn, thường là toàn bộ, mã nguồn hoạt động cho bạn. Nếu có thời gian, hãy xem Nghệ thuật Lập trình theo Cảm hứng được Rick Rubin chuyển thể để tìm hiểu thêm về cách thức của lập trình theo cảm hứng.

Một lợi thế lớn của phương pháp mới này là tính dễ tiếp cận, vì những người không có kinh nghiệm lập trình vẫn 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 tạo nguyên mẫu cho ý tưởng mới trước khi thực sự cam kết với chúng. Điều này đặc biệt hữu ích cho các startup. Nhược điểm là các nhà phát triển rất có thể sẽ không hiểu đầy đủ mã nguồn được tạo ra hoạt động như thế nào. Với các dự án phụ nhỏ, điều này không thành vấn đề, nhưng với phần mềm cấp độ 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ụ ngoài kia giúp việc lập trình theo cảm hứng trở nên 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 trực tiếp với AI trong môi trường của mình hoặc cung cấp các giao diện chuyên dụng cho lập trình theo cảm hứng. Cá nhân tôi chủ yếu gắn bó với Cursor IDEClaude Code CLI cho các dự án này.

Nhưng đây là điều cần nói. Những công cụ và mô hình này tốn tiền. Với 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 theo cảm hứng, bạn trả bằng ví tiền của mình. Và nếu bạn không biết mình đang làm gì, bạn sẽ phải trả bằng cả ví tiền lẫn thời gian. Mỗi dự án trên trang này tốn khoảng $10 đến $20 để xây dựng. Con số đó sẽ tăng lên nếu bạn thử nghiệm nhiều. Tôi nghĩ rằng khi các mô hình này được cải thiện và trở nên hiệu quả hơn, chi phí cuối cùng sẽ giảm xuống. Hiện tại, đây là điều đáng cân nhắc khi quyết định liệu lập trình theo cảm hứng có phù hợp với dự án của bạn hay không.

Tò mò về những gì có thể làm được, tôi đã tự mình thử lập trình theo cảm hứng và tạo ra 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, mà còn kiểm tra và minh họa xem lập trình theo cảm hứng thực sự có thể làm được gì. Đây chỉ là cho vui, nhưng nó mang lại một thoáng nhìn về việc việ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 cải thiện.

Định lý con khỉ vô hạn

Nhà văn

Bạn đã từng nghe về Định lý con khỉ vô hạn chưa? Đây là một thí nghiệm tư tưởng mang tính triết học nói rằng nếu bạn cho vô hạn con khỉ vô hạn máy đánh chữ và vô hạn thời gian, thì 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 gõ ngẫu nhiên lên các phím.

Nghe thật ngớ ngẩn, đúng không? Nhưng đây là phần thú vị. Lập trình theo cảm hứng hơi giống vậy, chỉ khác là 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ĩ xem. Các 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 cho một LLM một lời nhắc, nó thực ra không “suy nghĩ” về vấn đề của bạn từng bước như một nhà phát triển con người. Thay vào đó, nó dự đoán token tiếp theo có khả năng cao nhất dựa trên các mẫu mà nó học đượ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ó lại hiệu quả. Mô hình xuất ra mã thực sự biên dịch được, chạy được và giải quyết được vấn đề của bạn. Không phải thông qua sự thấu hiểu, mà thông qua việc khớp mẫu xác suất ở quy mô cực kỳ lớn. Nó giống như bộ tạo văn bản ngẫu nhiên tinh vi nhất của vũ trụ đã tìm ra câu trả lời “đúng”. Nhưng ở đây, sự khác biệt là tốc độ. Những con khỉ kia sẽ cần một sự vô hạn theo đúng nghĩa đen. Còn AI của bạn? Chỉ mất 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 theo cảm hứng, bạn đang khai thác hàng triệu dòng mẫu mã, được chưng cất thành một mô hình, để tạo ra các giải pháp. Nó 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 vì sao nó mạnh mẽ đến vậy, và cũng là lý do, phải thừa nhận, vì sao việc hiểu mã nguồn thực sự làm gì vẫn rất 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 theo cảm hứng không phải là nhận bất kỳ câu trả lời nào, mà là đặt đúng câu hỏi. Hãy nghĩ về Siêu máy tính Deep Thought từ Hướng dẫn du hành giữa các vì sao. 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 hậu về sự sống, vũ trụ và mọi thứ, chỉ để đưa cho bạn con số 42. Về mặt kỹ thuật, câu trả lời là đúng, nhưng vô dụng vì vấn đề thực sự là phải xác định được câu hỏi cần hỏi ngay từ đầu.

Lập trình theo cảm hứng cũng hoạt động theo cách tương tự. Các lời nhắc của bạn là tất cả, nhưng quản lý ngữ cảnh cũng vậy. Một lời nhắc mơ hồ sẽ cho bạn mã nguồn mơ hồ, và nếu bạn không cung cấp đúng tệp, tài liệu hoặc ví dụ làm ngữ cảnh, mô hình sẽ không hiểu chính xác bạn cần gì. Nếu bạn là người hiểu về lập trình, kiến trúc và thiết kế hệ thống, bạn có thể tạo ra các lời nhắc chi tiết và chọn lọc ngữ cảnh phù hợp để dẫn dắt LLM đến các giải pháp tuyệt vời. Nhưng nếu bạn không biết phải hỏi gì hoặc phải cung cấp ngữ cảnh nào, AI cũng sẽ không biết.

Đây thực ra là lý do vì sao lập trình theo cảm hứng lại rất mạnh đối với các nhà phát triển có kinh nghiệm. Chúng tôi 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 lời nhắc để hướng mô hình tránh chúng. Với người mới bắt đầu không có nền tảng kỹ thuật, điều này trở thành một hạn chế thực sự. Bạn có thể nhận được mã nguồn hoạt động, nhưng nếu không hiểu điều gì đã sai hoặc cần hỏi gì tiếp theo, bạn sẽ bị mắc kẹt.

Khi lập trình theo cảm hứng là chưa đủ

Các mô hình AI mới nhất rất ấn tượng, nhưng chúng không phải là viên đạn bạc. Lập trình theo cảm hứng có thể hoạt động trong môi trường 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 những 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 lệch đi. Và bạn cần tư duy của hacker. Hãy nghĩ khác đi và cố gắng phá vỡ dự án được lập trình theo cảm hứng 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 ai đó có thể khai thác? Đây là điều phân biệt mã chỉ vừa đủ chạy được với mã thực sự vững chắc.

Nhưng đây là điều cần nhớ. AI không sở hữu bạn. Bạn sở hữu AI. Đừng chỉ chấp nhận những gì nó tạo ra. Hãy xem xét lại. Hãy kiểm thử nó. Hãy phá vỡ nó. Và thành thật mà nói, đối với một số phần trong mã nguồn của bạn, bạn sẽ cần quay lại cách lập trình cũ. Tập trung lại, suy nghĩ sâu sắc, tự viết lấy. Lập trình theo cảm hứng giúp tăng tốc mọi thứ, nhưng nó không thay thế được lập trình thực thụ khi điều đó thực sự quan trọng.

Có một điều khác tôi đã học được. Đôi khi bạn chỉ cần kết thúc một phiên làm việc với AI và bắt đầu một phiên mới. Khi lịch sử cuộc trò chuyện của bạn ngày càng dài, hiệu suất của mô hình sẽ suy giảm. Nó mắc nhiều lỗi hơn, tạo ra mã kém mạch lạc hơn, và bắt đầu ảo giác thường xuyên hơn. Nếu bạn không nhận ra điều đó và dừng lại, những lỗi này sẽ cộng dồn lên nhau, làm mọi thứ ngày càng tồi tệ hơn. Giống như đang cố đọc một tài liệu đã bị photocopy lặp đi lặp lại nhiều lần. Bắt đầu lại từ đầu giúp mọi thứ sạch sẽ và sắc nét hơn.

Các dự án được lập trình theo cảm hứng

Dưới đây là hai dự án, stairs (kho mã nguồn) và transcendental (kho mã nguồn), mà tôi đã xây dựng bằng phương pháp lập trình theo cảm hứng. Phần lớn được tạo từ các lời nhắc, với công việc thủ công chỉ giới hạn ở việc cung cấp ngữ cảnh, gỡ lỗi và triển khai lên GitLab Pages. Đây là những thử nghiệm trang tĩnh thú vị, thể hiện những gì có thể làm được khi bạn kết hợp ý tưởng sáng tạo với mã nguồn thông qua lập trình theo cảm hứng. Cả hai đều được lưu trữ trên GitLab.

Xem các dự án

Stairs

Transcendental