Il motivo principale per cui nessuna lingua supporta questo livello a livello semantico è che le varie esigenze sono troppo diverse per trovare un denominatore comune che sia abbastanza grande per tale funzione. Il nascondiglio dei dati è già abbastanza grave, e diventa solo peggiore quando hai bisogno di un controllo ancora più preciso.
Ci sarebbero dei vantaggi in un tale linguaggio, ad esempio, potresti contrassegnare certi dati come privati per chiunque tranne l'oggetto che li ha creati (le password sarebbero un ottimo esempio: nemmeno il codice in esecuzione nella stessa applicazione potrebbe leggerle).
Sfortunatamente, questa "protezione" sarebbe superficiale poiché a livello di assemblatore, la protezione non esisterebbe. Per essere efficiente, l'hardware dovrebbe supportarlo. In questo caso, probabilmente a livello di un singolo byte nella RAM. Ciò renderebbe tale applicazione estremamente sicura e dolorosamente lenta.
Nel mondo reale, questo lo trovate nello TPM chip sulla scheda madre e, in una forma molto approssimativa, con le tabelle MMU della CPU. Ma questo è a un livello di pagina 4K, non a livello di byte. Ci sono librerie per gestire entrambi, ma ciò non conta come "supporto per la lingua" IMO.
Java ha qualcosa del genere in forma di Security API. È necessario avvolgere il codice in questione in un tutore che chiede l'attuale SecuityManager
se l'accesso è consentito o meno.
In Python, è possibile ottenere qualcosa di simile con i decoratori (per metodi e funzioni) o implementando __setattr__
e __getattr__
per l'accesso al campo.
fonte
2009-08-05 14:07:06
Mi sono preso la libertà di aggiungere PHP all'elenco di lingue che implementano il livello di accesso basato su classi. –