1 điểm bởi GN⁺ 2026-03-23 | 1 bình luận | Chia sẻ qua WhatsApp
  • Lập trình là một hành vi sáng tạo nhằm dần tinh chỉnh những đặc tả mơ hồ thành chính xác, và AI tăng tốc quá trình này bằng cách chuyển đặc tả tiếng Anh thành code
  • 'Vibe coding' cho phép một phong cách phát triển dựa trên cảm giác, nhưng không thể tránh được vấn đề về độ phức tạp và lỗi do rò rỉ trừu tượng
  • Con người sử dụng trừu tượng hóa và nén thông tin để xử lý độ phức tạp, và đó chính là giá trị cốt lõi của lập trình
  • Trong kỷ nguyên AGI, AI được kỳ vọng sẽ hỗ trợ những mức trừu tượng tốt hơn, giúp tạo ra code tinh xảo và giàu tính nghệ thuật
  • Trái với nhận định “code đã chết”, AI được xem là công cụ mở ra một khởi đầu mới cho việc lập trình chứ không phải sự kết thúc của nó

Cái chết của code là một tuyên bố bị phóng đại

  • Chỉ ra sự mơ hồ của đặc tả bằng tiếng Anh và giới hạn của độ chính xác, bài viết cho rằng lập trình là hành vi giống như viết lách, liên tục lặp lại để nâng cao độ chính xác
    • Qua trích dẫn của Bertrand Russell, bài viết nhấn mạnh rằng “mọi thứ đều mơ hồ cho đến khi ta cố gắng làm cho nó chính xác”
    • AI nhanh chóng chuyển những đặc tả viết bằng tiếng Anh thành code có thể chạy được, giúp người dùng dần cụ thể hóa kết quả mong muốn
  • 'Vibe coding' là cách phát triển mang tính cảm giác khi phản hồi với những gì AI tạo ra, nhưng điều này có thể tạo ra ảo tưởng về một mức trừu tượng chính xác
    • Khi trừu tượng bị rò rỉ, các lỗi không lường trước sẽ xuất hiện, và vấn đề này càng nghiêm trọng khi quy mô tăng lên
    • Bài viết giới thiệu trường hợp của Dan Shipper: sau khi trình soạn thảo văn bản cộng tác được làm bằng 'vibe coding' trở nên phổ biến, nó đã sập vì vấn đề độ phức tạp
    • “Cộng tác trực tiếp” thoạt nhìn có vẻ đơn giản theo trực giác, nhưng trên thực tế lại là một bài toán rất khó, cho thấy bản chất của độ phức tạp

Trừu tượng hóa và kiểm soát độ phức tạp

  • Con người chỉ có thể nhận thức khoảng 7±2 mục cùng lúc, nên cách duy nhất để xử lý độ phức tạp là ‘nén’, tức trừu tượng hóa
    • Qua trích dẫn của Edsger Dijkstra, bài viết nhấn mạnh rằng “mục đích của trừu tượng hóa không phải là sự mơ hồ mà là độ chính xác ở một tầng ý nghĩa mới”
    • Trường hợp Sophie Alpert đơn giản hóa sơ đồ luồng thông báo phức tạp của Slack được đưa ra làm ví dụ
  • Cốt lõi của lập trình là tạo ra những mức trừu tượng tốt hơn để xử lý độ phức tạp, và vẻ đẹp đó có thể được tìm thấy trong functional reactive programming cùng nhiều hướng tiếp cận khác
    • Ngay cả những bài toán vốn dĩ phức tạp như trình soạn thảo văn bản cộng tác cũng có thể dần được chinh phục thông qua các công cụ trừu tượng như ReactJS hay TailwindCSS

Kỷ nguyên AGI và vai trò của code

  • Khi AI ngày càng phát triển nhanh hơn và rẻ hơn, cuối cùng nó sẽ đạt tới trí tuệ không thể phân biệt với con người (AGI)
    • Trong kỷ nguyên AGI, ai cũng có thể sử dụng năng lực trí tuệ mạnh đến mức tương đương “100 thiên tài cấp Karpathy” với chi phí thấp
    • Tuy nhiên, điều này không nhằm sản sinh ra ‘nhiều code tệ hơn’, mà sẽ được dùng như công cụ để tạo ra các mức trừu tượng tốt hơn và hiểu rõ hơn về độ phức tạp
  • Code không chỉ là phương tiện để tạo ra phần mềm mà còn là một sản phẩm nghệ thuật quan trọng tự thân, và code viết tốt được ví như thơ
    • Cũng như không tồn tại ‘vibe writing’ trong viết lách, coding cũng không thể bị thay thế bằng một hành vi thuần cảm tính
    • Khi AGI xuất hiện, máy móc sẽ có thể viết ra code ‘không phải đồ tạp nham (non-slop)’, và đó sẽ là một bước tiến huy hoàng cho nhân loại

AI và sự cải thiện chất lượng code

  • Hiện tại AI vẫn tạo ra code chưa hoàn hảo, nhưng các lập trình viên đang sử dụng nó với sự cân nhắc đó
    • Giống như quan điểm của Simon Willison, AI nên được sử dụng như một công cụ để tạo ra code tốt hơn
    • Khi AGI xuất hiện, nó trước tiên sẽ được đưa vào giải quyết những bài toán trừu tượng khó nhất, để cải thiện các hệ thống phức tạp như thư viện trình soạn thảo cộng tác
  • Bài viết giới thiệu trường hợp phát triển framework React full-stack (vtrr) cho Val Town bằng Opus 4.6
    • Nó đã giải quyết ngay lập tức các vấn đề còn tồn đọng liên quan đến React Router 7, đồng thời xử lý độ phức tạp một cách thanh nhã bằng bản demo một file duy nhất dài 50 dòng
    • Điều này cho thấy việc tạo ra code tinh xảo thông qua sự hợp tác giữa AI và con người là hoàn toàn khả thi

Tương lai của code và giá trị của chủ nghĩa hình thức

  • Nhiều người trong xã hội tin rằng “code đã chết”, nhưng đó là sai lầm tương tự như tuyên bố sự kết thúc của những câu chuyện chỉ vì máy in được phát minh
    • AI không phải là sự kết thúc của coding mà là một khởi đầu mới của coding
  • Qua các trích dẫn của Edsger Dijkstra, Tony Hoare và Charles Babbage, bài viết nhấn mạnh rằng tư duy hình thức và sức mạnh nén của ký hiệu đã mở rộng năng lực tư duy của con người
    • Dijkstra nói rằng việc sử dụng ngôn ngữ hình thức nên được xem là một đặc quyền chứ không phải gánh nặng
    • Hoare đối chiếu hai cách tiếp cận: “thiết kế đơn giản với lỗi rõ ràng là không có” và “thiết kế phức tạp mà lỗi không rõ ràng”
    • Babbage chỉ ra rằng sức nén của ký hiệu là một lực thúc đẩy tư duy
  • Kết luận, code không hề chết mà ngược lại đang nổi lên như một công cụ sáng tạo còn mạnh mẽ hơn trong kỷ nguyên AI

1 bình luận

 
GN⁺ 2026-03-23
Ý kiến trên Hacker News
  • Chris Lattner đã xem xét một trình biên dịch được viết bằng Claude AI, và cho rằng không có gì mang tính đột phá
    AI có xu hướng tái tổ hợp kiến thức sẵn có theo kiểu trung bình, nên không thể tự tạo ra tư duy phản biện hay các mô hình mới
    Con người có thể suy nghĩ vượt ra ngoài đồng thuận hiện có, nhưng AI lại có lực kéo quay về phía đồng thuận đó
    Cuối cùng, AI là một kẻ tuân thủ chuẩn mực (conformist), và đó vừa là điểm mạnh vừa là điểm yếu của nó
    Bài viết liên quan

    • Với tôi, LLM hữu ích nhất khi tích hợp nhiều hệ thống với nhau
      Thay vì phải mất hàng giờ tự lần mò tài liệu để hiểu các cấu hình xác thực phức tạp như OAuth hay SAML, LLM có thể nhanh chóng tạo ra mã tích hợp có thể chạy được
      Tôi cũng dùng AI như một kiểu rubber duck debugging để sắp xếp lại suy nghĩ của mình khi trò chuyện với nó
      Những cuộc trao đổi như vậy có mức độ phức tạp mà người không có kinh nghiệm phát triển thực tế khó theo kịp
    • Tôi nghĩ câu hỏi AI có thay thế con người hay không không phải là vấn đề nhị nguyên, mà là một phổ liên tục
      Điều đáng lo thực sự là liệu AI có làm giảm nhu cầu đến mức ngành rơi vào tình trạng cung vượt cầu hay không
      Nếu các bài toán kinh doanh mới vẫn tiếp tục xuất hiện thì AI sẽ là công cụ hữu ích, còn nếu không thì việc làm vẫn sẽ giảm dù có AI hay không
    • Câu nói “AI tạo ra câu trả lời quanh khu vực trung tâm của tư duy hiện có” có liên quan đến Định lý xấp xỉ phổ quát (Universal Approximation Theorem)
      Về bản chất, mạng nơ-ron thực hiện nội suy (interpolation) chứ không phải ngoại suy (extrapolation)
      Tức là trong vùng đã học thì rất tinh vi, nhưng ra ngoài vùng đó thì không thể dự đoán được
      Bài trên Wikipediaví dụ SolidGoldMagikarp cho thấy điều này rất rõ
    • Tôi nghĩ đánh giá của Lattner là một so sánh thiếu công bằng
      Mục tiêu của Claude không phải là đổi mới, mà là chứng minh rằng “AI có thể tạo ra một trình biên dịch hay không”
      Nhìn vào các trường hợp như AlphaDev hay AlphaEvolve, hoàn toàn có thể AI sẽ thực sự tạo ra đổi mới thông qua học khám phá và kết hợp tri thức
    • Đúng là AI đi theo lối tư duy mang tính quy ước, nhưng đó lại chính là thế mạnh
      Trong đa số trường hợp, chúng ta muốn một công cụ có thể dự đoán được, chứ không muốn một thực thể bất ổn tự học lấy
      AI có khả năng sắp xếp các yêu cầu mâu thuẫn để tạo ra một triển khai nhất quán
      Ví dụ, nó có thể phản hồi logic trước những yêu cầu bất khả thi như “hãy vẽ 7 đường màu đỏ bằng mực xanh”
      Việc Claude thực sự nói rằng “điều đó là bất khả thi nên câu trả lời trung thực là vẽ 0 đường” là một ví dụ của tư duy phản biện
  • Về câu hỏi “AI có thể tạo ra công nghệ mới không?”, tôi khá hoài nghi
    AI phụ thuộc vào dữ liệu có sẵn, nên khi xuất hiện ngôn ngữ hay framework mới, việc thiếu dữ liệu huấn luyện có thể gây ra nguy cơ làm chậm tốc độ tiến hóa

    • Nhưng phần mềm vốn đã đang ở giai đoạn tốc độ thay đổi của công cụ chậm lại
      Lập trình bằng AI thậm chí có thể làm giảm việc “phát minh lại bánh xe”, và giúp thoát khỏi hội chứng NIH
    • Tôi đang xử lý một framework mới bằng mô hình AI
      Dù gần như không có dữ liệu huấn luyện, nó vẫn có thể đọc tài liệu, viết mã và thực hiện các thử nghiệm mới
    • Giả định rằng chỉ con người mới có thể tạo ra cái mới là khá yếu
      Chúng ta nên để ngỏ khả năng rằng một ngày nào đó AI cũng có thể thực hiện sự tổng hợp công nghệ mang tính sáng tạo
    • Vấn đề lớn hơn là những framework mà AI chưa được học sẽ bị đối xử như thể không tồn tại
      Cuối cùng có thể sẽ đến thời kỳ các nhà phát triển phải trả tiền để được đưa vào dữ liệu huấn luyện AI
    • Đã có những nỗ lực nhằm giải quyết vấn đề này
      Ví dụ, các nền tảng như skills.sh cung cấp hệ thống kỹ năng để dạy AI về framework mới
      Chỉ với tài liệu và mã ví dụ, AI đã có thể sử dụng ngay framework đó
  • Tôi có cảm xúc mâu thuẫn về code
    Trong công việc, code là nợ, nhưng đồng thời cũng là niềm vui như một thú vui cá nhân
    Tôi có cảm giác rằng thế giới kiểu máy tính trong Star Trek, nơi “chỉ cần nói yêu cầu là hệ thống tự xử lý”, đang đến gần

    • Nhưng có người lại nói tương lai kiểu Star Trek và thực tế hiện nay đang đi theo hai hướng hoàn toàn trái ngược
  • Rất nhiều nguồn lực trí tuệ của xã hội đang bị đổ vào công nghệ quảng cáo hay ngành công nghiệp giám sát
    Nếu AI thay thế việc viết code, đó có thể trở thành cơ hội để tái phân bổ nhân tài

    • Nhưng các mục tiêu công nghiệp như vậy không dễ biến mất chỉ nhờ thay đổi công nghệ
  • Tôi đang tạo ra một CRDT có thể di chuyển, xóa và sắp xếp trong cấu trúc cây mà không cần tombstone
    Claude Code viết mã khá tốt, nhưng cứ liên tục cố thêm tombstone, nên tôi phải thuyết phục nó bằng chứng minh logic
    Có vẻ AI vẫn chưa hoàn toàn có được kiểu hiểu biết cấu trúc tinh vi như thế này

    • Tôi được khuyên nên dùng Codex cho những dự án như vậy
  • Mỗi khi công nghệ mới xuất hiện, con người luôn trải qua một giai đoạn kỳ vọng quá mức và thử nghiệm
    Qua quá trình đó, chúng ta học được giới hạn của công nghệ, đó là cách của con người
    Lời hứa của lập trình tác tử nghe quá hấp dẫn, nhưng cuối cùng ai rồi cũng sẽ học được thực tế qua thử và sai

  • Thay vì nói rằng “code đã chết”, tôi cho rằng con người đang nâng mức trừu tượng lên thêm một tầng
    Giờ đây chỉ cần viết đặc tả bằng tiếng Anh là AI có thể viết mã
    Nhưng khi cần độ đặc tả chính xác (specificity) tuyệt đối, code vẫn hữu ích hơn
    Giống như chỉnh sửa ảnh, khi cần kiểm soát chính xác thì tự làm vẫn tốt hơn, nhưng trong đa số trường hợp giao cho AI là đủ
    Tôi nghĩ theo thời gian AI sẽ viết mã ổn định và an toàn hơn con người

    • Tất nhiên, nếu đến thời điểm tỷ lệ lỗi của con người cao hơn LLM, thì lỗi của con người còn có thể trở thành vấn đề lớn hơn cả hallucination của AI
  • Như Simon Willison đã nói, giá trị thực sự của vibe coding không phải là “nhanh hơn”, mà là tạo ra “mã tốt hơn
    Có thể tạo nguyên mẫu bằng nhiều mô hình thiết kế khác nhau, rồi lặp lại cải tiến theo các tiêu chí khả năng đọc, độ tin cậy và khả năng chịu lỗi

    • Tôi cũng có cùng hy vọng đó
      Giờ đây trong code review, nếu nói “hãy sửa phần này như thế này”, AI sẽ chỉnh ngay
      Nhưng nhiều đồng nghiệp chỉ đang mong chờ một “thế giới nơi code biến mất”
  • Cách đây không lâu có bài báo nói Donald Knuth yêu cầu AI đưa ra một chứng minh, và AI đã tìm được một chứng minh trước đó chưa từng được biết đến
    Nhưng nhiều khả năng đó không phải là khám phá mới, mà là việc tìm lại tài liệu đã bị lãng quên
    Chính điểm này vừa khiến LLM trở thành công cụ nghiên cứu mạnh mẽ, vừa làm nó trông như thể có tính sáng tạo

    • Giống như câu nói của vị cục trưởng sở bằng sáng chế năm 1899 rằng “mọi thứ đáng để phát minh đều đã được phát minh”, sự sáng tạo của con người vẫn tiếp tục tiến hóa
    • Tạo ra một trình biên dịch C thật ra không khó như nhiều người nghĩ
      Nếu đọc Dragon Book, bạn có thể làm ra một cái chạy được trong vài tháng, và trong quá trình đó sẽ hiểu toàn bộ nguyên lý
    • Những đổi mới mà C# từng thể hiện vào đầu những năm 2000 cho thấy, về sau vẫn sẽ còn những tiến bộ mới trong ngôn ngữ
    • Thực ra C không quá phức tạp, nên thậm chí chỉ trong vài ngày cũng có thể làm ra một trình biên dịch
  • Tôi nghĩ ngôn ngữ lập trình là phương tiện để con người biểu đạt ý định một cách cô đọng
    Nhưng đôi khi ngôn ngữ tự nhiên lại truyền đạt ý định chính xác và đậm đặc hơn
    Một phép trừu tượng tốt là thứ giúp thu hẹp khoảng cách này, và DSL hay các ngôn ngữ thuộc họ ML/Lisp là ví dụ như vậy
    Chẳng hạn như hướng dẫn Electric Clojure, nơi code có thể chứa đựng ý định tốt nhất
    Cuối cùng, như Wittgenstein từng nói, “một bức tranh mơ hồ đôi khi lại chính là thứ chúng ta cần”

    • Về điều này, tôi muốn bổ sung câu của Dijkstra rằng “mục đích của trừu tượng không phải là sự mơ hồ, mà là sự rõ ràng ở một tầng ý nghĩa mới