Scope (computer science)

From Wiki @ Karl Jones dot com
Jump to: navigation, search

In computer programming, the scope of a name binding -- an association of a name to an entity, such as a variable -- is the part of a computer program where the binding is valid: where the name can be used to refer to the entity.

Description

In other parts of the program the name may refer to a different entity (it may have a different binding), or to nothing at all (it may be unbound).

The scope of a binding is also known as the visibility of an entity, particularly in older or more technical literature -- this is from the perspective of the referenced entity, not the referencing name.

A scope is a part of a program that is or can be the scope for a set of bindings -- a precise definition is tricky (see below), but in casual use and in practice largely corresponds to a block, a function, or a file, depending on language and type of entity.

The term "scope" is also used to refer to the set of all entities that are visible or names that are valid within a portion of the program or at a given point in a program, which is more correctly referred to as context or environment.

Lexical scope versus dynamic scope

Strictly speaking and in practice for most programming languages, "part of a program" refers to "portion of the source code (area of text)", and is known as lexical scope.

In some languages, however, "part of a program" refers to "portion of run time (time period during execution)", and is known as dynamic scope.

Both of these terms are somewhat misleading, but the distinction itself is accurate and precise, and these are the standard respective terms.

See also

External links