25/10/2026 · VietTechies · Biên tập

Ngày 7 tháng 6 năm 2010, nhóm phát triển PLT Scheme thông báo ngôn ngữ lập trình của họ sẽ mang tên mới: Racket. Khi ấy, dự án đã trải qua hơn mười lăm năm phát triển, với nền tảng phần mềm trưởng thành và một cộng đồng người dùng ổn định.
Nhóm cho biết khi gọi hệ thống là Scheme, họ thường phải mở đầu phần giới thiệu bằng lời giải thích để tránh hiểu lầm. Tên mới nhằm làm rõ những gì nền tảng xây dựng ngôn ngữ này cung cấp, đi kèm cam kết rõ ràng về việc tiếp tục duy trì khả năng tương thích với Scheme.
Với người ngoài tìm hiểu trên mạng, gõ “scheme” vào Google sẽ cho ra những trang tham khảo thông dụng mô tả một phương ngữ tối giản của Lisp, được định nghĩa qua các đặc tả như R5RS, bản sửa đổi thứ năm của báo cáo ngôn ngữ Scheme. Mô tả ấy phù hợp với các đặc tả học thuật, nhưng lại khiến lập trình viên hiểu chưa đúng về những gì hệ sinh thái PLT thực sự cung cấp. Thay vì chỉ có phần cốt lõi nhỏ gọn phục vụ giảng dạy, PLT Scheme đã phát triển thành một nền tảng toàn diện, có bộ công cụ đồ họa, máy chủ web, hệ thống macro, giao diện với các ràng buộc dạng contract và tùy chọn kiểm tra kiểu tĩnh.
Trở ngại từ tên gọi cũ
Trong thông báo chính thức do lập trình viên Eli Barzilay đăng và tài liệu chuyển đổi đi kèm, nhóm đã trình bày cụ thể trở ngại khi giới thiệu hệ thống. Tài liệu về việc đổi tên lưu ý rằng dù bản triển khai này có chung nguồn gốc và cú pháp cốt lõi với Scheme, tên Scheme lại che khuất những tính năng như module, contract, lớp và kiểu tĩnh.
Tên gọi ấy còn gây va chạm ngoài ý muốn với cộng đồng Scheme rộng lớn hơn. Thông qua sách giáo khoa, các công bố học thuật và hoạt động phổ biến trong giáo dục, nhóm PLT được biết đến nhiều trong giới ngôn ngữ lập trình. Nhóm nhận ra rằng bộ phần mềm với phạm vi rộng của mình gây trở ngại cho những nhóm khác vốn cũng có quyền định nghĩa Scheme là gì. Giữ tên cũ có nguy cơ khiến Scheme bị định nghĩa theo cách lấn át những bản triển khai độc lập.
Đổi tên công cụ mà vẫn tương thích với những gì đã có
Đổi tên một ngôn ngữ lập trình đã có chỗ đứng sau mười lăm năm lập tức kéo theo những rủi ro trong vận hành. Chuỗi công cụ, các script build, chương trình giảng dạy và thư viện cá nhân đều phụ thuộc vào tên lệnh và tên tệp chính xác. Nhóm phát triển PLT chọn phối hợp chuyển đổi trên toàn bộ bản phân phối phần mềm thay vì thay đổi đột ngột.
Môi trường lập trình đồ họa DrScheme đổi tên thành DrRacket. Tệp thực thi dòng lệnh chính mzscheme trở thành racket, còn trình thông dịch đồ họa mred trở thành gracket. Trong các tệp mã nguồn thuộc bản phân phối chính thức, những module bắt đầu bằng khai báo #lang scheme được chuyển đổi đồng bộ sang #lang racket. Tên miền web, danh sách thư và tài liệu cũng chuyển địa chỉ, đưa người dùng đến với tên gọi mới.
Nhóm coi khả năng tương thích ngược như một cam kết kỹ thuật rõ ràng. Tài liệu đổi tên hứa tiếp tục hỗ trợ #lang scheme và nêu rằng các tệp thực thi, trang web, địa chỉ thư và tên module cũ sẽ chuyển tiếp sang các phiên bản tương ứng mang tên mới. Nhóm còn cam kết tiếp tục hỗ trợ những chuẩn Scheme chính thức, gồm R5RS và R6RS, bản sửa đổi thứ sáu của báo cáo Scheme. Nhờ đó, người làm giáo dục có thể yên tâm rằng họ vẫn dạy được các khái niệm Scheme trong DrRacket.
Nền tảng để xây dựng những ngôn ngữ khác
Việc đổi tên cũng làm rõ năng lực kiến trúc cốt lõi của hệ thống: tạo ngôn ngữ. Racket không đơn thuần là trình thông dịch cho một ngôn ngữ duy nhất; nó là một framework để định nghĩa những ngôn ngữ lập trình hoàn toàn mới. Tài liệu Racket Guide hiện hành giải thích kiến trúc này chi tiết hơn: macro mở rộng cú pháp ở tầng khai triển, còn những cơ chế bổ sung cho phép lập trình viên tùy chỉnh bộ đọc, định nghĩa điểm bắt đầu khai triển, rồi đóng gói cả hai thành một ngôn ngữ có tên để lựa chọn bằng dòng #lang.
Đến năm 2010, bản phân phối đã hỗ trợ nhiều mô hình lập trình. Lập trình viên có thể viết dịch vụ web mà không cần khai báo kiểu tường minh, áp dụng các contract giao diện nghiêm ngặt giữa các module, hoặc chuyển sang Typed Racket để kiểm tra kiểu lúc biên dịch. Họ thậm chí có thể thử nghiệm lập trình thuần hàm và cơ chế đánh giá lười ngay trong cùng bộ phần mềm. Gọi tất cả những công cụ riêng biệt ấy là “Scheme” đã che khuất thực tế rằng bộ máy bên dưới được thiết kế để hỗ trợ nhiều phong cách ngôn ngữ khác nhau.
Chấp nhận cái giá về mức độ nhận diện tên gọi
Nhóm phát triển thừa nhận một sự đánh đổi: bỏ tên Scheme có nguy cơ đánh mất độ nhận diện đã gây dựng. Tìm “racket” có thể cho ra dụng cụ thể thao thay vì công cụ lập trình. Một số thành viên từng thử gọi ngôn ngữ là PLT trong trao đổi không chính thức, nhưng thấy không thuận vì PLT chỉ nhóm người phát triển, đồng thời đóng vai trò bổ nghĩa cho Scheme và những danh từ khác.
Nhóm kết luận rằng lợi ích của một tên gọi rõ ràng hơn lớn hơn những vướng mắc trước mắt khi đưa người dùng sang tên mới. Tên mới thể hiện phạm vi của nền tảng; việc hỗ trợ tương thích giúp người dùng hiện có chuyển đổi.
Với lập trình viên đang lên kế hoạch chuyển đổi tương tự, câu chuyện của dự án gợi ý nên coi tên gọi mới và khả năng tương thích ngược là một kế hoạch thống nhất. PLT Scheme trở thành Racket, trong khi code hiện có vẫn có thể bắt đầu bằng #lang scheme.
Bài liên quan
Đọc bằng ngôn ngữ khác: English
Nguồn
- Racket Announcement (Blog chính thức, ngày 7 tháng 6 năm 2010)
- Racket: From PLT Scheme to Racket (Hỏi đáp chính thức về việc đổi tên)
- Dialects of Racket and Scheme (The Racket Guide)
- Creating Languages (The Racket Guide)
- Ảnh đại diện: MichaelMaggs; Wikimedia Commons; CC BY-SA 3.0 (đã chỉnh sửa từ ảnh gốc)
