Xin chào, tôi là một lập trình viên frontend với 8 năm kinh nghiệm.
Tôi đã thử sắp xếp lại bằng bài viết này trải nghiệm thiết kế một trình biên dịch DSL với sự trợ giúp của AI, thậm chí còn đăng cả một bài luận văn lên arXiv.
- Tôi bắt đầu từ trực giác có được khi tạo ra nhiều SaaS rằng “cùng một cấu trúc cứ lặp lại ở mỗi domain”
- Tôi sử dụng AI không phải như một công cụ hỗ trợ lập trình, mà như một công cụ để mượn cách tư duy của các chuyên gia ở từng lĩnh vực
- Khi chi phí của thất bại giảm xuống một cách có tính cấu trúc, tôi vẫn có thể đẩy dự án tiến lên dù đã thay đổi toàn bộ kiến trúc tới bốn lần
- Đồng thời, tôi cũng cảm nhận rõ tầm quan trọng của 20% còn lại mà AI không thể lấp đầy — trực giác rằng “lúc này bạn đang đặt sai câu hỏi”
Đây là một câu chuyện trải nghiệm chân thành, nơi tôi đồng thời cảm nhận được cả khả năng lẫn giới hạn của việc tận dụng AI.
11 bình luận
Tôi không biết ngôn ngữ hình thức là gì, nhưng
state,computedthì trông như biến cònactionthì trông như hàm, vậy chúng khác nhau ở điểm nào? Đọc bài thì lúc lại thấy như đang vẽ sơ đồ trạng thái, nhưng rồi lại không hiểu điều đó liên quan gì đến nội dung nói rằng miền được lặp lại; các từ xuất hiện trong bài không phải là những từ tôi không biết, nhưng lại rất khó đọc.Ví dụ, hãy thử nghĩ rằng chúng ta đang tạo một form đăng ký thành viên.
Giả sử trong form đăng ký, ta nhận 4 thông tin là tên, giới tính, tuổi và tình trạng đã hoàn thành nghĩa vụ quân sự.
Và giả sử có thêm một điều khoản như sau:
"Nếu giới tính là nam thì hiển thị select box và hỏi về việc đã hoàn thành nghĩa vụ quân sự hay chưa"
Ngoài ra, nếu có nút gửi đi, thì đó có thể được xem là domain model cho việc đăng ký thành viên mà chúng ta vẫn thường nói đến.
Khi đó, 4 mục tên, giới tính, tuổi và tình trạng hoàn thành nghĩa vụ quân sự là state của domain,
Còn visibility của select box hỏi về nghĩa vụ quân sự là computed được suy ra từ giới tính.
Và nút đăng ký thành viên là nơi action được ánh xạ vào.
Có lẽ vì tôi viết không hay nên đã không diễn đạt sao cho dễ đọc.
Bạn có thể hiểu rằng bản thân khái niệm này khá giống với điều tôi đã giải thích ở trên.
Dù chưa hiểu chính xác, nhưng đại khái tôi cảm thấy mình cũng nắm được ý.
Cảm ơn bạn.
Tôi đã đọc rất kỹ. Cả nội dung anh/chị viết trên blog nữa. Tôi không chắc phép so sánh này có phù hợp không, nhưng tôi nghĩ lý do tutorial đầu tiên của các ngôn ngữ luôn là Hello World!, và việc trước đây khi học phát triển web chúng ta làm ra forum, trang thương mại điện tử trong lúc học, rốt cuộc cũng đi cùng một quỹ đạo với điều anh/chị đã nói. Trước đây tôi từng nghĩ thế này: nếu có kỹ thuật đủ để làm được forum và trang thương mại điện tử, thì có thể hiện thực hóa được phần lớn các website. Và xét đến cùng, rốt cuộc lập trình chỉ đơn giản là có Input và Output mà thôi.
Tôi thấy phép ví von này khá phù hợp. Dự án của tôi thực tế cũng gần như chỉ được cấu thành từ 2 phần: Intent của con người và Snapshot.
Rốt cuộc, tôi vẫn nghĩ hướng mà dự án của mình cần đi là làm thế nào để tính toán ý định của con người (ví dụ: gõ phím, nhấp chuột) và khiến nó mang một ý nghĩa nào đó.
Tóm lại là bạn đã tạo ra một mini language để vẽ state diagram phải không?
Không, việc tôi cho bạn xem state diagram chỉ là một trong những cách để trực quan hóa chuyển đổi trạng thái bên trong Manifesto.
Chúng tôi đã xây dựng state machine quyết định như một framework.
Các phép tính bên trong Manifesto Core được thiết kế để luôn cho ra cùng một kết quả với cùng một trạng thái và lệnh.
Tôi hiểu là anh/chị đã tạo ra một DSL, nhưng tôi vẫn chưa rõ máy trạng thái xác định là nói về điều gì. Cũng tự hỏi không biết có máy trạng thái không xác định hay không... Dù sao thì tôi đã đọc rất thú vị. Mong anh/chị tiếp tục trau chuốt và phát triển nó.
À, nhận định của thầy là đúng. Bản thân state machine đúng là mang tính quyết định. Thứ tôi đưa vào trong manifesto là dựa trên nền tảng không Turing-complete, nên bên trong DSL không tồn tại vòng lặp. Nhờ đó, trước khi chạy chương trình, có thể tính trước chương trình sẽ hoạt động như thế nào và cũng có thể giải thích vì sao lại cho ra kết quả như vậy.
Cảm ơn vì góp ý!
Đọc rất thú vị. Có nhiều điểm khiến tôi đồng cảm. Vừa háo hức vừa lo sợ
Cảm ơn bạn đã đọc với sự quan tâm.
Dạo này tôi có rất nhiều trăn trở về việc nên sống như thế nào giữa dòng chảy thời đại đang thay đổi nhanh chóng trong tương lai.