Khi đã thạo một ngôn ngữ, học ngôn ngữ thứ hai với AI nhanh nhất theo cách: nhờ AI lập bảng đối chiếu khái niệm, tự viết lại một dự án nhỏ mình đã làm, rồi nhờ AI rà xem mã có đúng thành ngữ của ngôn ngữ mới không. Phần khó không phải cú pháp mà là thói quen cũ mang sang, và AI giỏi chỉ ra thói quen đó nếu bạn hỏi đúng.
Bài này dành cho lập trình viên đã đi làm cần học thêm ngôn ngữ cho dự án mới, ví dụ dân PHP chuyển sang Python, dân JavaScript học TypeScript hoặc Go. Lộ trình hai tuần là ví dụ giả định cho người dành khoảng một đến hai giờ mỗi ngày; bạn co giãn theo thời gian thật của mình.
Phần khó nằm ở thành ngữ, không ở cú pháp
Cú pháp một ngôn ngữ mới, người đã biết lập trình học vài buổi là đọc được. Vòng lặp, điều kiện, hàm, lớp đều có tương đương. Cái mất thời gian hơn là thành ngữ: cách mà người dùng lâu năm của ngôn ngữ đó quen viết, cách xử lý lỗi, cách tổ chức thư mục, thư viện chuẩn có sẵn gì, và quy ước đặt tên. Mã viết đúng cú pháp nhưng sai thành ngữ chạy được, nhưng đồng nghiệp đọc sẽ thấy lạ và khó bảo trì.
Ví dụ thường gặp: người từ PHP sang Python hay viết vòng lặp đếm chỉ số để duyệt danh sách, trong khi Python có cách duyệt trực tiếp từng phần tử và hàm enumerate khi cần cả chỉ số. Người từ JavaScript sang Go hay tìm cách ném và bắt ngoại lệ, trong khi Go trả lỗi như một giá trị và kiểm ngay sau mỗi lời gọi. Những khác biệt này không nằm trong bảng cú pháp, mà nằm trong triết lý thiết kế.
Đây là chỗ AI giúp nhiều nhất: nó đã thấy rất nhiều mã viết theo thành ngữ của mỗi ngôn ngữ, nên khi được hỏi đúng, nó chỉ ra được chỗ bạn đang viết theo kiểu ngôn ngữ cũ. Nhưng nó cũng là chỗ AI dễ chiều theo bạn nhất: bạn viết kiểu PHP trong Python, nó vẫn sửa cho chạy được mà không nói gì, trừ khi bạn yêu cầu rõ.
Bước đầu: nhờ AI lập bảng đối chiếu, bạn kiểm
Câu lệnh mẫu: "Mình thạo PHP 8, cần học Python 3 cho dự án xử lý dữ liệu. Lập bảng đối chiếu các khái niệm, ưu tiên những chỗ dễ nhầm khi mang thói quen PHP sang. Mỗi dòng ghi một ví dụ một dòng ở hai ngôn ngữ." Bảng dưới là phần đầu của một bảng như vậy, đã kiểm lại.
| Khái niệm | PHP | Python | Chỗ dễ nhầm |
|---|---|---|---|
| Mảng kết hợp | array với khoá chuỗi | dict | Python tách riêng list và dict, PHP dùng chung một kiểu array |
| Gán mảng cho biến khác | Sao chép giá trị | Chia sẻ cùng đối tượng | Sửa bản "sao" trong Python là sửa luôn bản gốc |
| Giá trị rỗng | null | None | Kiểm bằng is None, không dùng phép so sánh bằng |
| Nối chuỗi | dấu chấm | dấu cộng hoặc f-string | Python không tự đổi số thành chuỗi khi nối |
| Xử lý lỗi | try / catch | try / except | Python dùng ngoại lệ cho cả việc thường gặp như khoá không có trong dict |
| Quản lý gói | Composer | pip và môi trường ảo | Nên tạo môi trường ảo riêng cho mỗi dự án |
Đừng tin bảng AI lập một trăm phần trăm. Với mỗi dòng, viết ba dòng mã thử ở cả hai ngôn ngữ để kiểm. Dòng thứ hai trong bảng trên là ví dụ: nghe thì đơn giản, nhưng khi tự thử, bạn mới thật sự nhớ. Lưu bảng đã kiểm vào ghi chú; đó là tài liệu tra cứu riêng của bạn trong vài tháng đầu.
Lộ trình hai tuần, ví dụ giả định
Lộ trình cho người dành một đến hai giờ mỗi ngày. Mỗi bước kết thúc bằng một thứ chạy được trên máy.
- Ngày 1–2: cài đặt môi trường theo tài liệu chính thức, chạy chương trình đầu tiên, đọc phần hướng dẫn nhập môn chính thức của ngôn ngữ. Nhờ AI giải thích chỗ đọc không hiểu.
- Ngày 3–4: lập và kiểm bảng đối chiếu như mục trên. Làm mười đến mười lăm bài tập nhỏ, tự viết, chỉ hỏi AI khi kẹt.
- Ngày 5–6: học thư viện chuẩn: đọc ghi tệp, xử lý chuỗi, ngày giờ, JSON, gọi HTTP. Câu lệnh: "Với mỗi việc sau, cho biết thư viện chuẩn có sẵn gì, kèm ví dụ năm dòng. Ghi rõ nếu cần cài thêm gói."
- Ngày 7–10: viết lại một dự án nhỏ mình đã làm bằng ngôn ngữ cũ. Mục sau nói kỹ.
- Ngày 11–12: nhờ AI rà dự án theo thành ngữ, sửa từng điểm và hiểu vì sao.
- Ngày 13–14: học công cụ đi kèm: chạy kiểm thử, công cụ định dạng mã, công cụ phân tích tĩnh. Thêm kiểm thử cho dự án vừa viết.
Sau hai tuần, bạn chưa thạo, nhưng đã đủ để đọc mã của dự án thật và làm việc nhỏ có người rà. Phần còn lại đến từ làm việc thật, có đồng nghiệp nhận xét.
Viết lại một dự án nhỏ của chính mình
Bài tập hiệu quả nhất khi học ngôn ngữ thứ hai là viết lại thứ mình đã làm bằng ngôn ngữ cũ. Bạn đã hiểu bài toán, nên toàn bộ sự chú ý dồn vào cách diễn đạt trong ngôn ngữ mới. Chọn dự án cỡ vài trăm dòng: một công cụ dòng lệnh đọc tệp nhật ký và thống kê, một trang nhỏ có biểu mẫu, một tập lệnh đồng bộ dữ liệu. Dự án dùng dữ liệu công ty thì làm bản thu nhỏ với dữ liệu giả.
Điều quan trọng: tự viết, không dán mã cũ vào AI và nhờ dịch. Dịch máy móc cho bạn mã chạy được nhưng mang nguyên thành ngữ của ngôn ngữ cũ, và bạn không học được gì. Danh mục giao việc cho AI của trang có bài riêng về nhờ AI chuyển mã sang ngôn ngữ khác cho công việc thật; khi đang học thì làm ngược lại, tự viết trước rồi mới so.
Trong lúc viết, giữ một cửa sổ chatbot để hỏi những câu cụ thể kiểu "trong Go, cách thường dùng để đọc tệp từng dòng là gì" hay "Python có cách nào gọn hơn để gom danh sách theo một khoá". Câu hỏi hẹp cho câu trả lời đúng thành ngữ hơn là câu hỏi rộng. Ghi lại mỗi điều mới học được vào bảng đối chiếu.
Nhờ AI rà mã theo thành ngữ của ngôn ngữ mới
Khi dự án đã chạy, mới đến lúc nhờ AI rà. Câu lệnh nên nói rõ bạn muốn học, không chỉ muốn mã chạy:
- "Mình mới chuyển từ PHP sang Python. Đây là mã mình viết. Chỉ ra những chỗ mình đang viết theo kiểu PHP mà người viết Python lâu năm sẽ viết khác. Với mỗi chỗ, giải thích lý do, không viết lại cả tệp."
- "Có chỗ nào mình tự viết lại thứ mà thư viện chuẩn đã có sẵn không?"
- "Quy ước đặt tên, cấu trúc thư mục và cách xử lý lỗi ở đây có đúng thói quen chung của cộng đồng ngôn ngữ này không?"
- "Liệt kê theo thứ tự quan trọng: sai có thể gây lỗi, khó đọc, khác biệt nhỏ về phong cách."
Câu cuối giúp bạn không bị ngợp. AI hay đưa ra hàng chục góp ý, trong đó nhiều góp ý chỉ là khẩu vị. Sửa phần gây lỗi trước, phần khó đọc sau, phong cách để cuối. Nếu dự án là của công ty, che tên miền, khoá, chuỗi kết nối cơ sở dữ liệu và tên khách hàng trước khi dán; tốt hơn là chỉ dán từng tệp có liên quan.
Bẫy khi học ngôn ngữ mới bằng AI
Phiên bản cũ. AI có ngày cắt dữ liệu, nên có thể dạy bạn cú pháp hay thư viện của bản cũ. Với ngôn ngữ thay đổi nhanh, nói rõ phiên bản ngay trong câu hỏi và đối chiếu với tài liệu chính thức của bản bạn cài.
Thư viện bịa hoặc đã ngừng phát triển. Khi AI gợi ý một gói bên ngoài, kiểm trên kho gói chính thức của ngôn ngữ rằng gói đó có thật, đúng tên, còn được cập nhật. Đây cũng là vấn đề an toàn: kẻ xấu có thể đăng gói trùng tên với gói AI hay bịa ra.
Đọc hiểu nhưng không viết được. Học bằng cách đọc giải thích của AI rất dễ chịu nhưng dễ dừng ở mức hiểu. Ép mình viết mỗi ngày, kể cả bài rất nhỏ.
Mang theo mọi thói quen cũ. Có những thói quen nên giữ, như đặt tên rõ ràng, viết kiểm thử. Có những thói quen phải bỏ, như cách xử lý lỗi hay cách quản lý bộ nhớ. Bảng đối chiếu và vòng rà thành ngữ giúp bạn phân biệt.
Học quá rộng. Ngôn ngữ nào cũng có những phần nâng cao mà dự án của bạn chưa cần. Hỏi AI: "Với dự án kiểu này, ba phần nào của ngôn ngữ mình cần thạo trước, phần nào để sau?" rồi giữ đúng phạm vi đó.
Khi nào đã đủ dùng và nên dừng học có chủ đích
Học ngôn ngữ thứ hai cho công việc khác với học cho vui: mục tiêu là làm được việc trong dự án, không phải biết hết. Có vài dấu hiệu cho thấy bạn đã qua giai đoạn học có chủ đích và có thể chuyển sang học qua việc thật. Bạn đọc được mã trong dự án mà không phải hỏi AI từng dòng. Bạn viết được một hàm mới theo đúng phong cách của các hàm xung quanh. Bạn đọc được thông báo lỗi của trình biên dịch hoặc trình thông dịch và đoán đúng nguyên nhân phần lớn thời gian. Người rà mã chủ yếu góp ý về logic nghiệp vụ, không còn góp ý về cách viết.
Khi đã đạt các mốc đó, giảm dần thời gian học riêng và tăng thời gian làm việc thật có người rà. Giữ bảng đối chiếu và danh sách lỗi thành ngữ của mình, bổ sung mỗi khi được góp ý. Sau vài tháng, đọc lại danh sách này sẽ thấy rõ mình đã đi được bao xa, và lần học ngôn ngữ thứ ba sẽ nhanh hơn hẳn vì bạn đã có quy trình.
Ngược lại, nếu sau một thời gian bạn vẫn cần AI giải thích hầu hết mọi đoạn mã, có lẽ bạn đã học bằng cách đọc nhiều hơn bằng cách viết. Quay lại bước viết lại dự án nhỏ, lần này tắt gợi ý tự động trong trình soạn thảo cho tới khi viết xong.
Câu hỏi thường gặp
Có nên học hai ngôn ngữ mới cùng lúc không?
Không nên nếu có thể tránh. Hai ngôn ngữ mới cùng lúc dễ lẫn cú pháp và thành ngữ. Học xong một ngôn ngữ đến mức làm được dự án nhỏ rồi mới sang cái thứ hai.
Đã có AI chuyển mã thì còn cần học ngôn ngữ mới không?
Cần, nếu bạn sẽ đọc, sửa và chịu trách nhiệm cho mã đó. Mã AI chuyển sang chỉ có giá trị khi có người hiểu ngôn ngữ đích để rà. Chỉ chạy một tập lệnh một lần thì có thể không cần học sâu.
Học theo khoá chính thức hay theo AI?
Phần hướng dẫn nhập môn chính thức của hầu hết ngôn ngữ phổ biến được viết rất kỹ, nên đọc nó làm xương sống. AI dùng để hỏi khi không hiểu, ra bài luyện và rà mã. Hai nguồn bổ sung cho nhau.
Làm sao biết mã của mình đã đúng thành ngữ?
Dùng công cụ định dạng và phân tích tĩnh chuẩn của ngôn ngữ, đọc mã của vài dự án mã nguồn mở có uy tín, và nhờ người dùng lâu năm rà. AI rà là bước đầu, không phải bước cuối.
Mất bao lâu để làm việc thật được bằng ngôn ngữ mới?
Rất khác nhau tuỳ khoảng cách giữa hai ngôn ngữ và độ phức tạp dự án. Từ PHP sang Python thường nhanh hơn từ JavaScript sang Rust. Mốc hợp lý là khi bạn sửa được lỗi nhỏ trong dự án thật mà người rà không phải sửa lại nhiều.