At this point, programming languages enter the picture. Specifying the desired control of access to a shared resource in a system is making a declarative statement about the resource.
This kind of statement can be integrated into a language by an extension of its typing facility.
When protection is declared along with data typing, the designer of each subsystem can specify its requirements for protection, as well as its need for use of other resources in a system.
Such a specification should be given directly as a program is composed, and in the language in which the program itself is stated.
This approach has several significant advantages: