AI đã thắng cuộc chiến TypeScript

Cuộc tranh luận đã kết thúc. TypeScript không thắng nhờ những lập luận sắc bén hơn. Nó thắng vì các công cụ AI đã khiến cuộc tranh luận trở nên không còn quan trọng nữa.

Các nhà nghiên cứu đã tìm thấy một quy luật then chốt. Hầu hết các lỗi biên dịch trong mã do AI tạo ra là do không khớp kiểu dữ liệu (type mismatches). Đây không phải là lỗi logic. Đó chỉ là những sai sót đơn giản khi cấu trúc của một hàm hoặc một đối số bị sai.

AI tạo mã nhanh chóng bằng cách tuân theo các khuôn mẫu. Nó không nắm giữ một mô hình tư duy hoàn chỉnh về toàn bộ mã nguồn của bạn. Một con người có thể phát hiện lỗi kiểu dữ liệu thông qua kinh nghiệm. Một trình kiểm tra kiểu (type checker) sẽ phát hiện nó ngay lập tức mà không cần bất kỳ ngữ cảnh nào.

Định nghĩa kiểu tĩnh (Static typing) không còn là một lựa chọn về phong cách nữa. Nó là một công cụ an toàn cho mã do AI viết.

Hãy xem điều này ảnh hưởng đến công việc hàng ngày của bạn như thế nào:

Mã nguồn động (Dynamic codebase) với AI:

  • AI viết một hàm.
  • Các kiểu dữ liệu là ngầm định.
  • Bạn phải tìm lỗi một cách thủ công.

Mã nguồn tĩnh (Static codebase) với AI:

  • AI viết một hàm.
  • Trình kiểm tra kiểu sẽ đánh dấu lỗi ngay lập tức.

Tỷ lệ sai sót là như nhau. Nhưng chi phí để khắc phục chúng thì khác nhau. Đây là lý do tại sao việc áp dụng TypeScript tiếp tục tăng trưởng. Các kiểu dữ liệu đóng vai trò như một gói bảo hiểm rẻ tiền khi một thực thể không phải con người viết bản thảo đầu tiên cho bạn.

Quy luật này cũng áp dụng cho các ngôn ngữ khác. Rust thậm chí còn hữu ích hơn trong trường hợp này. Trình kiểm tra quyền sở hữu (borrow checker) ngăn chặn các lỗi bộ nhớ và lỗi đồng thời (concurrency bugs) mà AI thường gây ra. Những lỗi này trông có vẻ đúng ở phạm vi cục bộ nhưng lại thất bại khi thực thi (runtime).

Các ngôn ngữ đang giành chiến thắng vì chúng giúp việc kiểm duyệt quá trình phát triển với sự hỗ trợ của AI trở nên an toàn hơn.

Nếu bạn dẫn dắt một đội ngũ, hãy thực hiện các bước sau:

  • Đầu tiên, hãy thêm định nghĩa kiểu tại các ranh giới (boundaries).
  • Tập trung vào chữ ký hàm (function signatures) và các hợp đồng API (API contracts).
  • Bảo vệ các khu vực mà dữ liệu di chuyển giữa các module.

Một cảnh báo: an toàn kiểu (type safety) không phải là thuốc chữa bách bệnh. Nó bắt được các lỗi mà AI dễ mắc phải. Nó không bắt được logic tồi hay các yêu cầu sai lệch. Một đoạn mã biên dịch thành công không phải lúc nào cũng đúng. Trình kiểm tra kiểu là dây an toàn, chứ không phải người lái xe.

Đội ngũ của bạn có sử dụng chế độ nghiêm ngặt (strict mode) theo mặc định không? Hãy cho tôi biết suy nghĩ của bạn bên dưới.

Nguồn: https://dev.to/tuba_mughal_2fd16fd2c7978/typescript-didnt-win-the-language-war-ai-did-it-for-them-79l