どの言語もセマンティック レベルでこれをサポートしていない主な理由は、さまざまなニーズがあまりにも異なり、そのような機能に十分な大きさの共通分母を見つけることができないためです。データの隠蔽はそのままでも十分に悪いものであり、さらにきめ細かな制御が必要な場合にのみ悪化します。
このような言語には利点があります。たとえば、特定のデータを、それを作成したオブジェクト以外の誰に対してもプライベートとしてマークできます (パスワードは良い例です。同じアプリケーションで実行されているコードでさえ、それらを読み取ることはできません)。
残念ながら、アセンブラ レベルでは保護が存在しないため、この「保護」は表面的なものになります。効率的であるためには、ハードウェアがそれをサポートする必要があります。この場合、おそらく RAM の 1 バイトのレベルです。これにより、そのようなアプリケーションは非常に安全になり、非常に遅くなります。
現実の世界では、これはメインボードのTPM チップにあり、非常に粗い形で CPU の MMU テーブルにあります。しかし、それはバイト レベルではなく、4K ページ レベルです。両方を処理するライブラリがありますが、それは「言語サポート」IMO とは見なされません。
Java にはSecurity APIの形でこのようなものがあります。SecuityManager
アクセスが許可されているかどうかを現在に尋ねるガーディアンで問題のコードをラップする必要があります。
Python では、デコレーター (メソッドと関数用) を使用するか、フィールド アクセス用の__setattr__
とを実装することで、同様のことを実現できます。__getattr__