Lý do chính tại sao không có ngôn ngữ nào hỗ trợ cho điều này ở cấp ngữ nghĩa là các nhu cầu khác nhau quá khác nhau để tìm mẫu số chung đủ lớn cho một tính năng như vậy. Dữ liệu ẩn là đủ xấu như nó được, và nó được chỉ tồi tệ hơn khi bạn cần kiểm soát hạt mịn hơn.
Chẳng hạn, bạn có thể đánh dấu dữ liệu nhất định là riêng tư cho bất kỳ ai nhưng đối tượng đã tạo dữ liệu đó (mật khẩu sẽ là một ví dụ tuyệt vời: Ngay cả mã chạy trong cùng ứng dụng cũng không thể đọc được)).
Thật không may, điều này "bảo vệ" sẽ được bề ngoài kể từ khi ở cấp độ lắp ráp, bảo vệ sẽ không tồn tại. Để có hiệu quả, phần cứng sẽ cần hỗ trợ nó. Trong trường hợp này, có lẽ ở mức một byte đơn trong RAM. Điều đó sẽ làm cho một ứng dụng như vậy cực kỳ an toàn và chậm chạp.
Trong thế giới thực, bạn sẽ tìm thấy điều này trong TPM chip trên bo mạch chủ của bạn và, ở dạng rất thô, với các bảng MMU của CPU. Nhưng đó là ở cấp độ trang 4K, không phải ở cấp độ byte. Có các thư viện để xử lý cả hai nhưng không được tính là IMO "hỗ trợ ngôn ngữ".
Java có dạng như thế này dưới dạng Security API. Bạn phải quấn mã trong câu hỏi trong một người giám hộ yêu cầu SecuityManager
hiện tại cho dù truy cập được phép hay không.
Trong Python, bạn có thể đạt được điều gì đó tương tự với trang trí (đối với phương pháp và chức năng) hoặc bằng cách thực hiện __setattr__
và __getattr__
để truy cập trường.
Nguồn
2009-08-05 14:07:06
Tôi lấy quyền tự do thêm PHP vào danh sách ngôn ngữ triển khai cấp độ truy cập dựa trên lớp học. –