1 điểm bởi GN⁺ 2025-11-11 | 1 bình luận | Chia sẻ qua WhatsApp
  • Đây là thư viện triển khai giao thức SWD để gỡ lỗi nhân RP2350 RISC-V, với cấu trúc dùng Raspberry Pi Pico2 để biến một Pico khác thành probe
  • Khoảng 80% mã nguồn được AI (Claude) tạo ra; tác giả làm nguyên mẫu cơ bản bằng máy hiện sóng và tài liệu, rồi để AI mở rộng mã
  • Trong quá trình làm dự án, tác giả trải qua cảm giác ghê tởm và hoài nghi mạnh mẽ do cấu trúc token vô nghĩa của mã AI, mất ngữ cảnhmất cảm giác sở hữu mã
  • Ngược lại, khi dùng AI như công cụ hỗ trợ cho phân tích tài liệu, giải mã dữ liệu, tạo struct, tác giả lại có trải nghiệm tích cực
  • Trường hợp này phơi bày các vấn đề về chất lượng, cảm quan và quyền sở hữu trong mã do AI sinh ra, đồng thời đặt ra những câu hỏi căn bản về bản chất của lập trình và vai trò của con người

0. VIBE CODE WARNING

  • Khoảng 80% toàn bộ mã là do AI sinh ra (vibe coded), và phần lớn README cũng được tạo tự động
  • Tác giả tự triển khai SBA, đọc/ghi thanh ghi, abstract command, PROGBUF dựa trên máy hiện sóng và tài liệu, sau đó giao phần thư viện hóa cho AI
  • Khi mã tăng từ 1.000 dòng lên 4.000 dòng, tác giả hoàn toàn đánh mất cấu trúc và ý nghĩa của mã, không còn cảm thấy đó là mã do mình viết
  • AI hiểu sai dap_read_mem32, dẫn đến lỗi giao thức và một lượng lớn mã phi logic
  • Kết quả là hoàn thành gần 10.000 dòng mã trong 10 giờ, nhưng không hề có cảm giác thành tựu hay trưởng thành nào

Sự khác biệt giữa mã của AI và mã của con người

  • Mã do con người viết gồm các token có chủ đích và mục đích, nên có thể hiểu được; còn token trong mã AI lại như những tổ hợp vô nghĩa, rất khó đọc
  • Một số phần trong mã AI có chất lượng còn tốt hơn con người, nhưng ngay dòng bên dưới có thể là mã lỗi chỉ trông có vẻ hợp lý
  • Sự không đồng nhất này cùng với việc đánh mất niềm tin cảm tính làm tê liệt năng lực phán đoán của lập trình viên
  • Khi mã càng lớn, cảm giác “đây là mã tốt hay mã xấu” (taste) biến mất, và mô hình tinh thần cùng cảm giác sở hữu cũng sụp đổ

Cảm xúc con người và sự hoài nghi

  • Tác giả đặt câu hỏi: “Đây có còn là lập trình không?” và bộc lộ sự ghê tởm và xấu hổ
  • Trong thời đại AI viết mã thay con người, tác giả thổ lộ sự hoang mang hiện sinh về việc con người còn tạo ra điều gì và nên can thiệp đến đâu
  • Tác giả thậm chí không còn chắc liệu chỉ đơn giản là “không viết mã” có phải tiến bộ hay không, hoặc “không mô hình hóa vấn đề” có thực sự hiệu quả hay không
  • Dù vẫn muốn tự tay tạo ra điều gì đó, tác giả cho rằng ý nghĩa của việc đó đang mờ nhạt dần trong môi trường phát triển lấy AI làm trung tâm

Trải nghiệm tích cực khi dùng AI

  • Tác giả đánh giá việc dùng AI cho phân tích tài liệu, giải mã dữ liệu máy hiện sóng, tự động sinh struct C là hiệu quả và đáng hài lòng
  • Đặc biệt, khi đọc được thanh ghi đầu tiên và đọc bộ nhớ thông qua SBA, tác giả cảm nhận được cảm giác thành tựu thực sự
  • Nói cách khác, trải nghiệm tích cực là khả thi khi dùng AI như trợ thủ thay vì người viết mã

Suy ngẫm kết luận

  • Việc sinh mã bằng AI tuy nhanh, nhưng dẫn đến sự mất mát về ý nghĩa, cảm quan và quyền sở hữu
  • Khi “gu” cảm nhận mã tốt của con người biến mất, bản chất của lập trình cũng bị lung lay
  • Tác giả kết lại rằng mình hy vọng hiện tượng này chỉ là một giai đoạn chuyển tiếp tạm thời, đồng thời thừa nhận bản thân cũng không biết “lập trình tốt hơn” thực sự là gì

Các phần kỹ thuật sau nguyên văn (1~20) là tài liệu triển khai chi tiết giao thức debug RP2350 RISC-V, bao gồm thông số kỹ thuật đầy đủ của toàn bộ stack debug như kiến trúc phân tầng SWD, thanh ghi DAP/DAPC, thực thi PROGBUF, truy cập SBA, điều khiển hart, tracing, reset, cấu trúc dual-hart, v.v.
Tuy nhiên, chủ đề cốt lõi là một nghiên cứu tình huống cá nhân (Vibe Code Warning) về “sự đứt gãy giữa mã do AI tạo ra và cảm quan của con người”.

1 bình luận

 
GN⁺ 2025-11-11
Ý kiến trên Hacker News
  • Tôi đồng cảm với cảm xúc của những người nói rằng “AI đã cướp mất niềm vui lập trình”, nhưng tôi nghĩ ‘làm’ so với ‘hoàn thành’ thì vế sau quan trọng hơn
    Ngày xưa người thắp đèn khí mất việc vì đèn điện, nhưng rốt cuộc điều quan trọng là mang ánh sáng cho thành phố
    Với tôi, AI là công cụ để hiện thực hóa ý tưởng và tạo ra kết quả. Tôi vẫn bỏ ra thời gian và công sức như những ‘lập trình viên thực thụ’, nhưng trọng tâm nằm ở việc định nghĩa vấn đề, mô-đun hóa, kiểm thử, sửa lỗi và cải tiến lặp lại

    • Cách nhị phân hóa kiểu “làm vs hoàn thành” là một lối nghĩ nguy hiểm
      Điều quan trọng là tạo ra một thế giới nơi con người có thể cảm nhận ý nghĩa, phẩm giá và niềm vui.
      Nếu tôi ăn một món ngon nhưng những người làm ra nó phải chịu đau khổ, hoặc đó là thức ăn do một thế lực xấu xa tạo ra bằng robot, thì tôi không muốn.
      Xã hội là để phục vụ con người, chứ không phải một danh sách kiểm tra chỉ nhằm tối ưu hiệu suất
    • “Hoàn thành” là gì? Vì tốc độ và độ phức tạp mà AI mang lại, việc xác minh kết quả ngày càng khó hơn
      Với dự án cá nhân thì không sao, nhưng trong môi trường có khách hàng, người dùng hoặc cổ đông thì cần kết quả có thể chứng minh được
      Phép so sánh với đèn khí là không phù hợp. AI không phải hệ thống vật lý như điện mà là phần mềm.
      Cuối cùng điều quan trọng là giải quyết được vấn đề. Nếu không giải quyết được thì đó chỉ là lao động mà thôi
    • So sánh với đèn khí là khập khiễng. Việc thắp đèn khí không phải là biểu đạt sáng tạo, còn viết code là một hành vi sáng tạo
      Nhiều người viết code không chỉ để tạo ra phần mềm hữu ích, mà còn vì niềm vui sáng tạo
      Những “lập trình viên thực thụ” cũng dành thời gian để suy nghĩ, định nghĩa, kiểm thử và chỉnh sửa như vậy
    • Phần lớn những gì AI và công nghệ tạo ra thực ra là những thứ không cần thiết
      Mấy thứ như ‘máy nhả chỉ nha khoa thông minh’, thiết bị tự động mua giấy vệ sinh, hay bot kiểu Clippy đều chỉ là lãng phí thời gian và năng lượng
    • Tinh thần thủ công và mối quan hệ với tri thức là điều quan trọng
      So với việc chỉ có được kết quả, cảm giác thỏa mãn khi học và hiểu quá trình còn lớn hơn
      Khi đọc Adrift, 76 Days at Sea, tôi cảm nhận được rằng tri thức sâu sắc có thể quyết định sống còn
      Điều này cũng giống với câu hỏi nên tự host dữ liệu hay giao cho dịch vụ tập trung
  • Khi thấy một bài viết trên internet diễn đạt chính xác hoàn toàn suy nghĩ của mình, tôi thật sự cảm thấy được an ủi
    Cảm ơn vì đã nói về trải nghiệm mang tính con người thay vì thứ nhiễu loạn kiểu “hãy chỉnh prompt thế này”

    • Tôi cũng vậy. Dùng AI lâu quá thì có cảm giác trống rỗng và vô định như lúc vô thức lướt YouTube vậy
      Muốn thoát khỏi trạng thái đó thì phải ngủ một giấc thật đã
    • Có người nghĩ AI có thể được dùng như Excel, nhưng với tôi nó giống máy đánh bạc hơn
      Nó đưa ra câu trả lời gần đúng, nhưng về mặt tâm lý lại có tính gây nghiện giống máy cờ bạc
  • Có người nói “tôi dùng AI viết 10.000 dòng code trong 10 giờ, nhưng nó khủng khiếp”, nhưng trải nghiệm đó thay đổi hoàn toàn tùy vào cách tiếp cận
    Cấu trúc prompt, lập kế hoạch, rà soát, kiểm thử, điều tiết tốc độ — mọi yếu tố đều khác nhau tùy người
    Nhiều lập trình viên mới thử cách tiếp cận ngẫu hứng gọi là vibe coding rồi thất bại

    • Tôi cũng đã điều chỉnh các hệ thống agent và liên tục phát hiện ra những kiểu thất bại mới
      Vì quá mệt nên tôi đang nghỉ một thời gian, và một ngày nào đó tôi định tự làm agent
      Tôi thấy giao mấy thứ này cho các big tech như OpenAI, Microsoft hay Anthropic là nguy hiểm
    • Tôi vẫn chưa từng thấy một dự án mã nguồn mở quy mô lớn được tạo ra bằng vibe coding
      Cuối cùng tôi nghĩ nó chỉ là một từ khóa thịnh hành mà thôi
    • Đã tốn công như vậy thì rốt cuộc có nhanh hơn tự tay code không? Tôi thấy đáng nghi
      Cảm giác như vì không muốn học thư viện mới nên trốn sang quản lý dự án vậy
    • Bạn nói đúng, nhưng chẳng ai nói rõ “cách tiếp cận đúng” thực sự là gì
      Bài từng gây chú ý “Just Talk to It” trước đây cũng thiếu chi tiết cụ thể
    • vibe coding rốt cuộc giống như một chỉ báo thay thế cho năng lực lập kế hoạch
      Càng ngẫu hứng thì lại càng cần kế hoạch kỹ hơn. Đó có phải ý chính bạn muốn nói không?
  • Code công khai giờ đây không còn là thứ do con người tạo ra nữa
    Nếu loại code này lại được đưa trở lại làm dữ liệu huấn luyện, thế giới có nguy cơ ngập trong những kết quả vô nghĩa hơn nữa
    Trong nghiên cứu ngôn ngữ cũng đã có trường hợp văn bản do máy tạo ra quá nhiều đến mức việc thu thập dữ liệu trở nên vô nghĩa

    • Tôi nghĩ rồi sẽ ổn thôi. AI đúng là tạo ra nhiều đống code rác, nhưng cuối cùng con người vẫn tìm được ngọc trong đá
      Trong đa số trường hợp, con người vẫn là bên định hướng
      Tất nhiên nếu một đứa trẻ 12 tuổi gõ “yolo 3d game now” thì cũng đáng lo, nhưng đồng thời nghe cũng khá ngầu
    • Nhận xét thú vị đấy. Hiện tượng này có thể tạo ra hiệu ứng tương tự model poisoning
  • Đọc code được vibe coding tạo ra giống như đọc “English as She is Spoke”
    Ngữ pháp thì đúng, nhưng đó không phải thứ code giống ngôn ngữ của con người

  • Tôi cũng nghĩ tương tự
    Thường khi phát triển một ứng dụng, trong đầu tôi sẽ hình thành mô hình tinh thần suốt nhiều ngày, đến cả lúc tắm cũng tái cấu trúc nó trong đầu
    Nhưng khi vibe coding, ngữ cảnh nội tại đó biến mất và việc đọc code trở nên đau đớn
    Ngược lại, code do chính tôi viết thì đọc rất thích

    • Tôi vẫn có cảm giác đó, nhưng là ở cấp độ hệ thống chứ không phải cấp độ code
      Tôi hiểu kết nối giữa các hệ thống và luồng dữ liệu, nhưng phần triển khai chi tiết thì khá mờ nhạt
  • Tôi cũng có trải nghiệm tương tự. LLM đã làm giảm niềm vui lập trình
    Quy trình bây giờ chỉ là “viết prompt → chờ một chút → lặp lại → review code”
    Tôi hiểu cấu trúc của code, nhưng vì không trực tiếp chạm tay vào nên độ sâu hiểu biết trở nên nông hơn
    Có lẽ với cách huấn luyện đúng thì sẽ làm được, nhưng tôi vẫn chưa đến mức đó

    • Tôi không giao việc viết code cho LLM mà chỉ dùng nó để brainstorm ý tưởng
      Nó hữu ích cho việc tạo test code. Tôi tự viết một test tốt, rồi giao phần còn lại cho AI để tiết kiệm thời gian
    • Ít nhất thì với code do LLM tạo ra, tôi tự viết kiểm thử tự động
      Nhờ vậy tôi hiểu được giới hạn của nó, rồi viết lại bằng thiết kế hệ thống tốt hơn
      Dù code của LLM có dài dòng đi nữa, tôi vẫn thấy nó còn khá hơn mấy đoạn code kỳ quái mà các lập trình viên trước đây để lại
  • Bài viết có hơi cường điệu, nhưng tôi cũng đồng cảm
    LLM hữu ích cho việc hiểu và tóm tắt code có sẵn, tự động hoàn thành, và tạo prototype cho người không phải lập trình viên, nhưng
    tuyệt đối không nên dùng nó để viết code production

  • Giải pháp là grounding mô hình
    Với code, cách làm đó là phát triển hướng kiểm thử (TDD)
    Hãy viết test trước, xác nhận nó thất bại, kiểm tra lý do, rồi mới để nó viết code
    Làm như vậy sẽ tạo ra một bản đặc tả hành vi cho code, về sau có thể trở thành tài liệu tham chiếu cho con người hoặc agent

  • Đọc đến cuối README trên GitHub thì thấy tác giả thừa nhận 3/4 code là do AI tạo ra nhưng vẫn đòi bản quyền
    Đã có án lệ rằng nội dung không phải do con người tạo ra thì về pháp lý không thể được bảo hộ bản quyền