Các ứng dụng toán học cũ được hồi sinh và ứng dụng mới được tạo bằng các coding agent hiện đại
(terrytao.wordpress.com)- Đã dùng AI coding agent hiện đại để chuyển khoảng 24 applet toán học Java 1.0 đã ngừng được hỗ trợ sang JavaScript, đồng thời hoàn thiện cả các công cụ trực quan hóa trước đây chưa thể triển khai
- Các applet cũ được khôi phục chỉ trong vài giờ; cũng có các cải tiến đồ họa như hiển thị màu cho tập Besicovitch và tái triển khai applet honeycomb từng được tạo cùng Allen Knutson năm 1999
- Trong quá trình chuyển đổi, bug do agent tạo ra chỉ là 1 vấn đề nhỏ liên quan đến xử lý thao tác kéo; ngược lại, agent phát hiện 2 bug chưa được xác nhận trong mã cũ, nên chất lượng mã tổng thể vẫn ở mức tương đương
- Ý tưởng “Inkscape cho không gian Minkowski” từng bị bỏ dở năm 1999 vì độ phức tạp đã được hiện thực hóa thành phiên bản alpha của ứng dụng trực quan hóa thuyết tương đối hẹp chỉ sau vài giờ vibe coding; công cụ trực quan hóa giả thuyết Gilbreath cũng được tạo mới
- Với các trực quan hóa phụ trợ không phải phần cốt lõi của lập luận toán học, rủi ro do bug trong mã do LLM sinh ra tương đối thấp, nên có thể dùng làm tài liệu bổ sung tương tác cho các bài báo trong tương lai
Khởi đầu và sự gián đoạn của các applet Java 1.0
- Từ năm 1999, tác giả quan tâm đến cách dùng máy tính để nghiên cứu và giảng dạy toán học, và đã phát triển nhiều applet bằng Java 1.0 cho các bài giảng giải tích phức và đại số tuyến tính
- Ngoài giảng dạy, các applet cũng được dùng để trực quan hóa nhiều đối tượng toán học, bao gồm honeycomb và tập Besicovitch
- Dù đạt được một số kết quả, việc tự lập trình đòi hỏi nhiều thời gian; khi các chuẩn web không còn hỗ trợ phiên bản Java đó, các applet ngừng hoạt động
Chuyển sang JavaScript bằng AI
- Khi chuyển các trang web và dữ liệu blog cũ sang một kho lưu trữ dễ bảo trì hơn, tác giả tận dụng hỗ trợ AI hiện đại
- Như một thử nghiệm, tác giả yêu cầu agent chuyển các applet hiện có sang một ngôn ngữ hiện được hỗ trợ, và cuối cùng chọn JavaScript
- Khoảng 24 applet cũ đã hoạt động trở lại chỉ trong vài giờ, và một số phần đồ họa cũng được cải thiện
- Applet tập Besicovitch chuyển từ màn hình đơn sắc cũ sang màn hình có màu
- Applet honeycomb, được tạo cùng Allen Knutson vào năm 1999 và từng đặc biệt khó triển khai thủ công, cũng được khôi phục
Bug mới và phát hiện lỗi trong mã cũ
- Coding agent dựa trên LLM có thể tạo ra các bug rõ ràng hoặc tinh vi, nhưng vấn đề mới được phát hiện trong lần chuyển đổi này chỉ là 1 bug nhỏ
- Ở một applet giải tích phức, hành vi không mong muốn xảy ra khi kéo ra ngoài vùng chính
- Ngược lại, agent đã tìm ra 2 bug chưa được xác nhận ẩn trong mã cũ; nếu xét cùng các điểm này, chất lượng mã tổng thể ở mức tương đương
- Các applet này là tư liệu trực quan phụ trợ, không phải thành phần cốt lõi của lập luận toán học, nên ngay cả khi có bug, rủi ro đi kèm cũng tương đối thấp
Công cụ thuyết tương đối hẹp từng bị bỏ dở năm 1999
- Khi việc chuyển đổi các ứng dụng cũ diễn ra không quá khó khăn, tác giả cũng thử tạo ứng dụng mới
- Năm 1999, tác giả từng hình dung một công cụ trực quan hóa thuyết tương đối hẹp giống “Inkscape cho không gian Minkowski”, nhưng khi đó Inkscape thậm chí còn chưa ra mắt
- Tác giả đã bắt đầu viết mã Java nhưng phải bỏ dự án vì khó kiểm soát độ phức tạp
- Sau vài giờ vibe coding với AI agent, tác giả đã triển khai applet biểu đồ không-thời gian khớp với ý tưởng khi đó
- Tóm tắt cuộc trò chuyện khi tạo ứng dụng cũng được công khai; nhiều báo cáo triển khai kỹ thuật lặp lại đã bị loại bỏ trong quá trình biên tập
- Ứng dụng hiện là phiên bản alpha mới chỉ qua một số playtest, nên do đặc thù mã do LLM sinh ra, có thể vẫn còn bug chưa được xử lý và các phần thô cần thêm phản hồi
Trực quan hóa giả thuyết Gilbreath
- Sau khi viết một bài blog về bài báo liên quan đến giả thuyết Gilbreath, tác giả cũng yêu cầu agent tạo công cụ trực quan hóa để đính kèm vào bài báo và bài đăng
- Qua vài giờ trao đổi, công cụ trực quan hóa giả thuyết Gilbreath đã được hoàn thiện
- Bản ghi cuộc trò chuyện trong quá trình tạo cũng được công khai, và quá trình phát triển diễn ra không gặp khó khăn lớn
Dùng làm tài liệu bổ sung tương tác cho bài báo
- Tác giả cân nhắc bổ sung trực quan hóa tương tác làm tài liệu bổ sung cho các bài báo trong tương lai
- Vì các trực quan hóa này không thiết yếu đối với phần cốt lõi của bài báo, rủi ro do lỗi có thể chấp nhận được ngay cả khi chúng được tạo thông qua tương tác có hướng dẫn với LLM agent
1 bình luận
Ý kiến trên Hacker News
Tài liệu trực quan hóa bằng LLM đã giúp cải thiện đáng kể các lớp khoa học máy tính: https://htmx.org/essays/universities-and-ai/#demos-visualiza...
Giờ đây đã có thể làm được những tài liệu vốn luôn muốn tạo nhưng không có thời gian, và với sự trợ giúp của Claude, còn thiết kế được một máy tính 8-bit đơn giản để bổ sung cho máy tính giáo dục 16-bit hiện có chỉ trong vài ngày: https://bdp.cs.montana.edu/
Nhờ vậy có thể tiếp thu nội dung nhanh hơn và đọc được nhiều bài báo hơn trước
Khi đó đã nghĩ rằng sẽ thật tốt nếu có thể mô phỏng nhiều hơn những gì được dạy. Giáo dục là quá trình phân rã đối tượng thành các thành phần và xem cách chúng tương tác, nên một mô phỏng được vibe coding có thể là công cụ rất tốt
Nếu Terry Tao tạo ứng dụng bằng coding agent, thì giờ chỉ còn cách ngày các nhà đoạt Fields Medal cũng như chúng ta đi hỏi LLM tại sao container Docker không khởi động một bước nữa thôi
Đặc biệt là ngoài các lĩnh vực phần mềm truyền thống, nhu cầu phần mềm tiềm năng gần như vô hạn. Ngay cả khi tiến bộ của LLM dừng lại từ hôm nay, cũng sẽ mất 10 năm để tận dụng hết năng lực viết phần mềm mới xuất hiện, và trường hợp này cho thấy điều đó rất rõ
Kết luận rằng “các tài liệu bổ trợ tương tác tạo bằng LLM không phải yếu tố cốt lõi thiết yếu của bài báo, nên có thể chấp nhận rủi ro khi tạo các trực quan hóa như vậy thông qua tương tác được dẫn dắt với agent” nghe khá cân bằng
LLM là công cụ, có việc phù hợp và có việc không phù hợp, và nhìn chung không nên tin nguyên xi kết quả của nó
Người ta tin dùng búa với đinh nhưng không dùng cho vít, nhưng cũng không vì thế mà nói búa nói chung là không đáng tin. Khó khăn với AI là ta vẫn chưa biết cái gì là đinh và cái gì là vít
Thay vì chỉ nói đừng tin, sẽ hữu ích hơn nếu hướng dẫn rằng cần dành nhiều thời gian hơn trước cho việc lập kế hoạch, lặp lại và rà soát; học cách tận dụng kỹ thuật, ngữ cảnh và các sub-agent; và trước hết hãy luyện tập với các dự án phi sản xuất, rủi ro thấp. Mục tiêu nên là xây dựng độ tin cậy trong khi hiểu rõ quy trình tốt và các trường hợp sử dụng phù hợp
Cảnh Terry Tao dùng coding agent giống hệt một đầu bếp đạt sao Michelin phát hiện ra đồ ăn chế biến sẵn bằng lò vi sóng và thực sự hào hứng với nó
José Andrés cũng gọi món trứng omelet bằng lò vi sóng là món khó thất bại nhất, đồng thời nói đó là “món omelet mềm xốp tuyệt nhất trong lịch sử loài người”: https://www.tasteofhome.com/article/jose-andres-microwave-om...
Những bậc thầy như Tao cho thấy công nghệ có thể tạo ra đồ gá đó, còn các nhà chế tạo máy thì đang từng bước chứng minh rằng họ có thể làm không chỉ đồ gá cho hộp trang sức mà cả đồ gá để chế tạo máy làm đồ gá
Việc chạy các Java applet giáo dục cũ trong lĩnh vực toán học và vật lý từng là một trường hợp sử dụng phổ biến suốt thời gian dài của CheerpJ Applet Runner, công cụ chạy Java bytecode trong trình duyệt thông qua WebAssembly
Khá phức tạp để nghĩ xem nên đón nhận thế nào việc agent hiện đại hóa đúng nghĩa và giải quyết vấn đề này. Việc sinh viên có thể tương tác với nội dung theo cách hiện đại và dễ tiếp cận hơn rõ ràng là điều tốt, nhưng dù không quan trọng về mặt thương mại, ứng dụng trong giáo dục vẫn luôn là một nguồn tự hào: https://chromewebstore.google.com/detail/cheerpj-applet-runn...
Những bài viết trong đó chuyên gia ngành dùng AI để làm thứ gì đó thú vị trong lĩnh vực của mình lúc nào cũng vui, nhưng có cảm giác đó chỉ là dự án sở thích chứ không phải công việc nghiêm túc
https://terrytao.wordpress.com/tag/artificial-intelligence/, https://academy.openai.com/public/blogs/terence-tao-ai-is-re...
Tôi cũng có tuổi rồi và nếu cần thì ngày mai về hưu với mức sống chật vật một chút cũng được, nhưng tôi lo cho những lập trình viên trẻ như đứa cháu 25 tuổi của mình, những người vẫn chưa tích lũy đủ tài sản để có thể không đi làm. Việc tự tay viết code sẽ trở thành một lĩnh vực chuyên biệt chỉ còn rất ít người làm, giống như tính căn bậc hai bằng tay hay đúc chữ kim loại
Việc dùng AI coding trên diện rộng mới chỉ bắt đầu, và các mô hình cũng chỉ gần đây mới đạt tới mức có thể làm việc nghiêm túc. Đã có ứng dụng thực tế rồi, nhưng cũng có nhiều lý do khiến khó công khai việc dùng trong code vận hành thực tế trên blog cá nhân, như chính sách tổ chức, code riêng tư và bí mật kinh doanh
Tôi đã bật cười ở đoạn “độ phức tạp của code tăng đến mức không thể kiểm soát nên đã bỏ dự án”. Ngay cả Terry Tao cũng có loại code quá phức tạp để không thể viết nổi
Tôi rất kỳ vọng LLM sẽ khiến cả nhiều người rất thông minh trong các lĩnh vực cụ thể nhưng trước đây chưa thể bước vào lập trình cũng tham gia phát triển phần mềm
Tôi đã dùng Claude để port một game Java applet tiếng Đức thời trung học 30 năm tuổi sang JavaScript, còn tạo cả lịch sử Git giả nữa: https://github.com/bradfitz/koffer#der-verloren-koffe
Cũng có thể chạy online: https://bradfitz.github.io/koffer/js/
Thật tuyệt khi thấy đoạn code khoảng 30 năm tuổi lại sống dậy và vận hành trở lại
Chính câu mở đầu hơi gượng của bài viết lại là bằng chứng cho thấy AI không viết nó. Câu đó là: “Từ khi tạo các applet cho môn giải tích phức và đại số tuyến tính bằng Java 1.0 vào năm 1999, dùng chúng để trực quan hóa các đối tượng toán học như cấu trúc tổ ong hay tập Besicovitch, tôi đã quan tâm đến cách nghiên cứu và giảng dạy toán học với sự trợ giúp của máy móc”