Основная причина, почему ни один язык не поддерживает это на семантическом уровне, состоит в том, что различные потребности слишком различны, чтобы найти общий знаменатель, который достаточно велик для такой функции. Сокрытие данных достаточно плохо, и оно становится только хуже, когда вам нужен еще более точный контроль.
У такого языка были бы преимущества, например, вы могли бы пометить определенные данные как личные для всех, кроме объекта, который их создал (пароли были бы отличным примером: даже код, запущенный в том же приложении, не мог их прочитать) .
К сожалению, эта «защита» будет поверхностной, поскольку на уровне ассемблера защита не будет существовать. Чтобы быть эффективным, аппаратное обеспечение должно было бы поддерживать это. В этом случае, вероятно, на уровне одного байта в оперативной памяти. Это сделало бы такое приложение чрезвычайно безопасным и мучительно медленным.
В реальном мире вы найдете это в микросхеме TPM на вашей материнской плате и, в очень грубой форме, в таблицах MMU ЦП. Но это на уровне страницы 4K, а не на уровне байтов. Есть библиотеки для обработки обоих, но это не считается «языковой поддержкой» IMO.
Java имеет что-то подобное в виде API безопасности . Вы должны обернуть данный код в опекуна, который спрашивает текущий SecuityManager
, разрешен ли доступ.
В Python вы можете добиться чего-то похожего с декораторами (для методов и функций) или с помощью __setattr__
и __getattr__
для доступа к полю.