Refers to a language where encapsulation boundaries are not enforced by the compiler or language definition; instead programming conventions (such as giving private members a double underscore in front of the name) are used to provide hints to programmers about what parts of a system comprise the external interface, and what parts comprise private implementation details.
Examples:
Note. The term "weak" is not intended to be pejorative in this context.