21 điểm bởi GN⁺ 2025-07-25 | 5 bình luận | Chia sẻ qua WhatsApp
  • Sự phát triển của các công cụ lập trình AI đang tạo ra một môi trường nơi lập trình viên có thể nhanh chóng bước vào một ngôn ngữ mới
  • Tác giả là một lập trình viên chỉ dùng Ruby trong 10 năm, nhưng trong năm nay nhờ cộng tác với các tác nhân AI cho lập trình như Cursor, Claude Code nên đã có thể đóng góp thực chất bằng các ngôn ngữ hệ thống như C, C++, Rust
  • Các công cụ như Claude Code và Cursor đặc biệt hữu ích ở cú pháp ngôn ngữ, thành ngữ lập trình và lý thuyết tổng quát
  • AI không phải là trình sinh mã, mà là một "kỹ sư ghép cặp chuyên gia ngôn ngữ", kết hợp với kinh nghiệm sẵn có để tối đa hóa hiệu quả học tập thông qua hỏi đáp thời gian thực, giải thích ngữ cảnh và phân tích ví dụ
  • Dù AI không biết hết ngữ cảnh riêng của từng dự án hay cấu trúc nội bộ sâu bên trong, nó vẫn có thể đưa ra lời khuyên tức thì về cú pháp ngôn ngữ, các mẫu điển hình và thư viện chuẩn, nhờ đó có thể đóng góp thực tế mà không cần hơn 100 giờ học trước
  • Việc sử dụng công cụ AI đang nhanh chóng thay đổi nhận thức truyền thống về chuyên môn ngôn ngữ lập trình, đồng thời mở ra môi trường nơi ngày càng nhiều lập trình viên có thể làm việc hiệu quả trên nhiều ngôn ngữ

Từ lập trình viên Ruby 10 năm sang chuyển đổi đa ngôn ngữ

  • Tác giả hoạt động với vai trò lập trình viên chuyên trách hệ sinh thái Ruby và Rails từ 2014 đến 2024
    • Trong thời gian đó, đã tích lũy kinh nghiệm phát triển và bảo trì các công cụ cốt lõi trong hệ sinh thái Ruby như Rails, IRB, RDoc, debug gem
  • Từ năm 2025, tác giả bắt đầu đóng góp cho các dự án ở lớp hệ thống ngoài Ruby như Sorbet(C++), trình phân tích RBS(C), ZJIT(Rust)
  • Đằng sau sự thay đổi này là việc đưa các tác nhân AI cho lập trình vào sử dụng (Cursor, Claude Code)
  • Ngay trong nội bộ Shopify, việc sử dụng tích cực các công cụ AI này cũng đang được khuyến khích

Điều kiện hoàn hảo hội tụ

  • Không chỉ vì AI, mà còn có một số điều kiện quan trọng khác cùng hội tụ
    • Sự thay đổi lộ trình của đội Ruby DX khiến Sorbet cần hỗ trợ RBS → tất yếu đòi hỏi kinh nghiệm với C/C++
    • Các thành viên trong đội hạ tầng Ruby & Rails của Shopify đã chia sẻ bí quyết và tạo ra môi trường kèm cặp rất tích cực
  • Trước đây cũng đã có những người cố vấn giỏi và cơ hội dự án thực tế, nhưng AI đã rút ngắn mang tính cách mạng rào cản học tập và đường cong làm quen

Tính phức hợp của lập trình hệ thống

  • Trường hợp dự án ZJIT (trình biên dịch JIT Ruby mới):
    • Cần đồng thời nhiều loại kiến thức/kỹ năng phức hợp
    • Rust(ngôn ngữ chính), C(ngôn ngữ triển khai lõi Ruby), lý thuyết JIT/trình biên dịch, cấu trúc và thiết kế riêng của ZJIT, nguyên lý hoạt động nội bộ của Ruby, hệ thống build của Ruby (autoconf, Makefile, v.v.)
    • Một Pull Request thường chạm tới 2~4 lĩnh vực cùng lúc
  • Hiệu quả của Claude Code
    • Có độ chính xác cao về cú pháp, lý thuyết trình biên dịch tổng quát, cùng ngữ pháp ngôn ngữmẫu biểu đạt của Rust/C/C++
    • Hỗ trợ cho ngữ cảnh đặc thù của dự án, cách triển khai nội bộ của Ruby và hệ thống build phức tạp còn phần nào hạn chế
    • Dù vậy, rào cản bước vào quá trình học vẫn giảm xuống còn chưa tới một nửa
  • AI hỗ trợ tức thì việc học cú pháp/lý thuyết/mẫu ngôn ngữ, còn ngữ cảnh riêng của dự án vẫn là phần của con người

Lập trình ghép cặp với AI

  • Tác giả bắt đầu nhìn AI không phải như một trình sinh mã đơn thuần mà là một đối tác bổ trợ
  • Cách cộng tác thực tế
    • Lập trình viên truyền đạt yêu cầu công việc và ngữ cảnh
    • AI tìm mẫu và đóng vai trò chuyên gia ngôn ngữ
    • Lập trình viên đặt câu hỏi về lý do thiết kế
    • AI chỉnh sửa mã hoặc tìm hiểu lý thuyết rồi cung cấp kết quả
    • Thông qua học tập mang tính đối thoại, có thể đồng thời nắm được cả ngôn ngữ lẫn cách sử dụng thực tế
  • Ví dụ: trong một nhiệm vụ profiling các lệnh bytecode của Ruby, có thể yêu cầu AI tìm các PR trước đây và giải thích từng dòng
    • Có thể thoải mái hỏi cả những "câu hỏi ngớ ngẩn" (như: “Vì sao trình biên dịch JIT cần profiling?”)
    • Nhận được phản hồi tức thì về những cú pháp chưa quen thuộc
  • Cũng có những trường hợp thất bại
    • Nếu hướng đi của dự án sai thì cuối cùng vẫn cần đồng nghiệp cố vấn chỉnh lại
    • Sau cùng, năng lực điều chỉnh lộ trình của chuyên gia con người vẫn là yếu tố không thể thiếu

Sự tháo dỡ rào cản ngôn ngữ lập trình

  • Đây là thời đại mà không còn cần 100 giờ học trước để đóng góp cho một dự án C mới
    • Ngay cả các ngôn ngữ "có rào cản gia nhập cao" như C và Rust cũng có thể được dùng để đóng góp ngay nhờ sự hỗ trợ của AI
  • AI nhanh chóng bắt được những lỗi của người mới bắt đầu (lỗi cú pháp, lỗi kiểu, hiểu sai cách dùng công cụ, v.v.), giúp có thể lập tức tạo ra đóng góp thực chất
  • Chuyên môn sâu vẫn quan trọng, nhưng ngày càng nhiều lập trình viên có thể đạt được năng suất trên nhiều ngôn ngữ
  • Giao cho AI phần cú pháp/hàm chuẩn/mẫu, còn lập trình viên tập trung vào giải quyết vấn đề thực sự
  • Việc một lập trình viên chỉ chuyên Ruby như tác giả trở thành lập trình viên đa ngôn ngữ trong chưa đầy 1 năm là một xu hướng mang tính đột phá
    • Quá trình chuyển đổi từ "lập trình viên chỉ dùng một ngôn ngữ" sang "người tạo ra giá trị trên nhiều ngôn ngữ" đang trở thành hiện thực
    • Đây có thể là điểm khởi đầu cho xu hướng mà ngay cả khái niệm chuyên môn theo từng ngôn ngữ cũng sẽ thay đổi trong tương lai

Kết luận

  • Các tác nhân AI cho lập trình đang hạ thấp mạnh mẽ rào cản gia nhập của ngôn ngữ lập trình,
    mở ra một thời đại mới nơi lập trình viên có thể làm việc hiệu quả ngay lập tức trên nhiều ngôn ngữ

5 bình luận

 
tested 2025-07-25

Việc tạo mã thì có thể vậy, nhưng còn khâu kiểm tra hay review mã thì ai làm...

 
3ae3ae 2025-07-27

Dù không thể viết bằng ngôn ngữ mình không thành thạo, nhưng nhiều khi vẫn có thể đọc hiểu sơ qua, nên đúng là sẽ tiết kiệm thời gian hơn trước.

 
girr311 2025-07-25

Có vẻ như giờ đây chúng ta có thể tiến nhanh hơn rất nhiều so với trước đây khi tiếp cận những công nghệ chưa từng dùng hoặc những lĩnh vực chưa từng trải nghiệm.

 
GN⁺ 2025-07-25
Ý kiến Hacker News
  • Tò mò không biết AI đang thực sự thay đổi đường cong học tập, hay chỉ đơn giản là khiến kinh nghiệm sẵn có trở nên thuận tiện hơn
    Trước trải nghiệm của một người nói rằng việc chỉ làm Ruby suốt 10 năm rồi trở thành lập trình viên đa ngôn ngữ trong vòng 1 năm là một bước đột phá, có người lại cho rằng đó đúng hơn là “điều đã không làm trong suốt 10 năm”
    Việc học ngôn ngữ lập trình đầu tiên và việc học một ngôn ngữ mới khi đã có vài năm kinh nghiệm là hai trải nghiệm hoàn toàn khác nhau

    • Tôi cũng nghĩ y hệt vậy
      Khó mà đồng cảm với một lập trình viên chỉ dùng một ngôn ngữ suốt 10 năm
      Thời kỳ đầu tôi cũng có bản sắc gắn với ngôn ngữ mình chọn, nhưng từ những lập trình viên thực sự dày dạn, tôi học được rằng “ngôn ngữ chỉ là công cụ”
      Khi tiếp xúc với nhiều ngôn ngữ, góc nhìn của bạn mở rộng lên rất nhiều, và có những ngộ ra rất khó diễn tả bằng lời
      Tôi thực sự hạnh phúc vì đã có được trải nghiệm đó

    • Tôi nghĩ ý kiến “dù không có AI thì 1 năm cũng đủ để học nhiều ngôn ngữ” phần nào là đúng
      Theo kinh nghiệm của tôi, khi làm các mini project Python với o4, tôi gặp những trường hợp cá biệt khá thú vị; nếu không có AI thì nhiều việc đã bị khựng lại vì chúng
      Ví dụ như cách unraid xử lý xml vm hay các vấn đề phát sinh trong dockers, nếu tự mình đào sâu thì có khi mất cả ngày
      Giờ AI hướng dẫn luôn các phần này nên mọi thứ trôi qua mượt mà hơn hẳn
      Vì vậy cũng có chút đáng sợ, nhưng nó thực sự hoạt động rất tốt
      Nhân tiện, ngôn ngữ lập trình đầu tiên của tôi là BASIC đời cũ

  • AI đang khiến các ngôn ngữ chủ lưu trở nên phổ biến hơn
    Những ngôn ngữ mà AI ít mắc lỗi nhất thường là Python, JS, Ruby — các ngôn ngữ có cộng đồng lớn và bộ dữ liệu đồ sộ
    Vì thế, hiệu quả cải thiện khả năng tiếp cận với các ngôn ngữ ngách không lớn đến vậy
    Bởi phần lớn lập trình viên không đủ thành thạo ngôn ngữ ngách để bắt được các lỗi lặt vặt
    Giống như bài học của machine learning, cuối cùng bên nào có nhiều dữ liệu huấn luyện hơn thì bên đó có lợi thế

    • AI rất mạnh về so khớp mẫu
      Nếu đưa vấn đề về các mẫu sẵn có, nó có thể lập tức đưa ra ví dụ mã tốt
      Nhưng vấn đề càng phức tạp hoặc đặc thù thì AI lại càng kém hữu ích
      Con người có thể linh hoạt xử lý các khái niệm trừu tượng và động tốt hơn

    • Những người dùng ngôn ngữ ngách thường coi trọng những giá trị khác ngoài độ phổ biến (ví dụ: hiệu quả, tiền bạc, học tập) hơn
      Nếu cần tăng độ phổ biến của ngôn ngữ, các chuyên gia có thể tạo thật nhiều mẫu mã tốt đúng theo idiom để AI sinh ra nhiều biến thể, khi đó rào cản gia nhập có thể giảm mạnh
      Khi việc viết các đoạn mã nhỏ trở nên dễ hơn, mọi người sẽ quan tâm tới chính ngôn ngữ đó nhiều hơn

    • LLM có xu hướng nói linh tinh thường xuyên hơn với ngôn ngữ ngách
      Tôi là một lập trình viên Scala, và tôi nghĩ phần lớn tranh luận về tính hữu ích của AI phụ thuộc vào loại ngôn ngữ bạn dùng
      Nếu là ngôn ngữ như JS thì có lẽ nó sẽ hữu ích hơn

    • Tôi lo rằng khi xuất hiện ngôn ngữ hay framework mới, nếu AI thiếu hỗ trợ chính xác thì mọi người sẽ ngại thay đổi
      Họ có thể cảm thấy sự bất tiện còn lớn hơn lợi ích
      Mỗi lần có bản phát hành mới, lại càng cần tài liệu MCP thân thiện với AI hoặc các tư liệu bổ sung

    • Với tôi, trải nghiệm dùng claude với Elm là cực kỳ tích cực
      Nhờ hệ thống kiểu tĩnh nên độ chính xác cao và giúp được rất nhiều
      Dĩ nhiên đôi lúc nó vẫn trả lời kỳ quặc, nhưng chắc ai cũng từng gặp điều đó

  • Tôi nghĩ chúng ta đang sống trong thời kỳ mà thực tế gần như không còn rào cản giữa các ngôn ngữ lớn
    Chỉ cần nhìn 10 ngôn ngữ được dùng rộng rãi trong phát triển ứng dụng hiện nay, đa số đều thuộc họ C hoặc ALGOL và cùng chia sẻ cú pháp tương tự, call-by-reference, và quản lý bộ nhớ tự động
    Với lập trình viên chuyên nghiệp, việc chuyển đổi mà không tốn quá nhiều công sức giữa các ngôn ngữ này là điều khả thi
    Việc học quản lý bộ nhớ lần đầu có thể hơi khó, nhưng nếu tận dụng tốt các mẫu quen thuộc, cảnh báo và linter thì vẫn chịu được
    Thực sự các ngôn ngữ có đường cong học tập dốc là Rust, Ada SPARK, Lisp, Forth, ML... và chúng không phải ngôn ngữ chủ lưu

  • Tôi đang dùng AI như một đối tác lập trình hỗ trợ
    Tôi tận dụng “kiến thức rộng nhưng nông” của AI để thăm dò trước, rồi khi cần đào sâu vào một lĩnh vực cụ thể thì mới nhờ tiếp
    Tôi dùng nó tích cực hơn cho việc học khái niệm hay công nghệ mới (ví dụ: backend webauthn, tích hợp passkey) hơn là học ngôn ngữ lập trình mới
    Ngay cả với người mới bắt đầu, AI cũng là trợ giúp rất lớn
    Tuy vậy, cũng có lúc AI đưa ra ví dụ sai (như dependency đã bị loại bỏ), nhưng rốt cuộc đó lại là trải nghiệm tốt vì khiến tôi hiểu sâu hơn
    Tôi không muốn giao cho AI tự động phát triển ứng dụng hoàn toàn
    Nó vẫn hay mắc lỗi vặt, nên nhất định phải kiểm tra lại

  • Gần đây AI giúp tôi rất nhiều trong việc học một codebase Swift mà tôi mới tiếp cận
    Nó giải đáp nhanh các thắc mắc và tăng tốc độ học
    Tuy nhiên, để thực sự đóng góp vào một dự án phức tạp thì vẫn cần kỹ năng và kinh nghiệm
    Ngay cả ở ngôn ngữ tôi biết, nó cũng sai nhiều chỗ; với ngôn ngữ tôi không biết thì còn khó review hơn

    • Tôi khó mà hiểu được làm sao có thể tự tin vào đầu ra của AI trong một ngôn ngữ mình không biết
      Mỗi lần đào sâu một ngôn ngữ mới, để review được thì vẫn phải mất nhiều thời gian cho tới khi đủ quen
      Có người nói rào cản ngôn ngữ đã giảm, nhưng trên thực tế vẫn có những ví dụ như WhatsApp chuyển sang web app thay vì ứng dụng desktop, nên rào cản chưa hề biến mất hoàn toàn
  • Điều này làm tôi nhớ tới nỗ lực trước đây của Microsoft với nền tảng .Net, khi họ muốn một nhóm có thể cộng tác bằng nhiều ngôn ngữ khác nhau như J#, Fortran.Net, Cobol#...
    Họ còn quảng bá rằng theo cách này, ngay cả những nhân tài #Intercal xuất sắc cũng có thể tăng năng suất lên gấp bốn lần

    • Tôi muốn được quay lại thời mà người ta thật sự tin vào những điều như thế
  • Tôi dự đoán vì AI mà các ngôn ngữ lập trình sẽ tiến hóa theo hướng có hệ kiểu Hindley Milner mạnh mẽ
    Haskell khó học, nhưng nếu có đủ dữ liệu thì nó là mục tiêu hoàn hảo cho coding agent
    Nó ở mức trừu tượng cao nhưng vẫn có thể kiểm chứng hình thức, và việc kết nối language server với AI cũng khá thuận tiện

    • Thực tế có vẻ ngược lại: Haskell lại đang có nguy cơ bị bỏ lại phía sau về hỗ trợ AI
      Nếu bạn thích ngôn ngữ hàm, có lẽ nên suy nghĩ vì sao lập trình bằng ngôn ngữ tự nhiên lại hấp dẫn đến vậy
      Ngôn ngữ tự nhiên có thể biểu đạt kết quả một cách mơ hồ, và máy móc sẽ tự lấp đầy phần đó
      Muốn có đột phá thật sự thì cần một kiểu lập trình đưa vào hệ logic mạnh + sự mơ hồ, chẳng hạn áp dụng cách tiếp cận logic kiểu MTL
      Đáng tiếc là nghiên cứu trong lĩnh vực này gần như đã dừng lại, và mạng nơ-ron đang chiếm ưu thế

    • Với LLM, Haskell kém thân thiện hơn vì bản thân ngôn ngữ có nhiều đặc tính sâu
      LLM chủ yếu xử lý các mẫu văn bản
      Những ngôn ngữ có đặc điểm đơn giản và lỗi biên dịch thân thiện (ví dụ: Go) là thứ AI xử lý tốt
      Cá nhân tôi thích ngôn ngữ có suy luận kiểu tốt, nhưng từ góc nhìn AI thì lại khác

    • Tôi đã thử dùng công cụ LSP MCP + LLM, và thấy hơi thất vọng
      LSP vốn được thiết kế cho người dùng là con người nên không hoàn toàn hợp với AI
      LLM mạnh ở so khớp mẫu, và khi cấu trúc kiểu đơn giản thì gần như không phát sinh lỗi kiểu
      Với cấu trúc phức tạp, LLM có thể không giải được hoặc người dùng có thể không hiểu nổi

    • Cũng có câu hỏi rằng “liệu Haskell có ví dụ kiểm chứng hình thức quy mô lớn nào không”, nhưng seL4, CompCert... thì phần lớn lại dựa trên C hoặc Coq+OCaml

    • Có thể việc dùng các ngôn ngữ kiểu phụ thuộc như Agda sẽ tăng lên
      Tuy vậy, nếu bộ dữ liệu quá ít thì việc chuyển giao tri thức của AI cũng có thể trở nên khó khăn

  • Sẽ tốt hơn nếu xem AI là một đối tác pair programming
    Khi người dùng học nhiều hơn, vai trò của AI cũng thay đổi: ban đầu là giải thích kiến thức cơ bản và sinh các đoạn mã nhỏ, sau đó chuyển sang thảo luận nâng cao + sinh mã theo đơn vị lớn, rồi review code
    Theo thời gian, chính bạn sẽ tự phát hiện ngày càng nhiều bug hơn

  • Nếu không xem AI chỉ là công cụ sinh mã mà là một đối tác có kỹ năng bổ sung, thì nó thực sự hữu ích
    Với ngôn ngữ không biết, cần hỏi kỹ về các giải pháp AI đưa ra
    Nếu hỏi cụ thể như “vì sao lại làm thế này”, “trong kịch bản khác thì sao?” thì nó thực sự giúp ích rất nhiều cho việc học

    • Khi đặt câu hỏi, AI giúp kiểm chứng suy nghĩ của tôi, nhưng lặp lại vài lần thì lại thành ra khó mà tin tưởng hoàn toàn

    • Cũng nên tập cho AI thói quen đặt câu hỏi rõ ràng
      Làm vậy sẽ giúp phát hiện sớm những chỗ hiểu sai hoặc lập luận còn yếu

  • Tôi từng yêu cầu Gemini viết một bash script để thử khả năng sinh mã của nó, nhưng script có lỗi
    May là tôi biết bash nên sửa được ngay, nhưng nếu là ngôn ngữ mình không biết thì khó mà nói những vấn đề như vậy đã xóa bỏ rào cản ngôn ngữ

    • Tôi nghĩ đây là vấn đề khá đặc thù của bash
      Chẳng hạn khi giao cho LLM làm một tác vụ tự động hóa tương tự bằng Go thì nó chạy đúng ngay từ lần đầu

    • Tôi không cho rằng đây hẳn là vấn đề của Gemini; nếu không có thông tin chính xác về model AI mà chỉ phê bình dựa trên tên thương hiệu thì tôi khó đồng ý
      Thực tế, khi đặt thành “Gemini 2.5 Pro (Jan 2025), nhiệt độ 0.15” thì nó lập tức sinh ra một idiomatic bash script rất tốt
      (lược bỏ mã ví dụ)
      Tuy nhiên, tôi cũng gặp vấn đề xử lý xuống dòng ở file được chỉnh bằng Windows Notepad trên WSL2, và Gemini cũng nhiệt tình chỉ cách khắc phục
      Điều thú vị là trong bash, việc dòng cuối không có ký tự xuống dòng khiến xử lý không đúng là hạn chế của chính bash
      Với PowerShell, gần như có thể làm tác vụ tương tự bằng một dòng lệnh, và không có vấn đề gì dù cuối file không có xuống dòng
      Nhờ Gemini hỗ trợ, tôi cũng có thể tối ưu PowerShell thành đoạn mã ngắn gọn hơn

 
stadia 2025-07-25

https://ruby-news.kr/articles/…
Tóm tắt từ dịch vụ tôi đang xây dựng. Đây là bản tôi đã dịch, khá giống nhau nhưng GeekNews được sắp xếp tốt hơn và dễ đọc hơn.