Psychology Wiki
m (moved Variable to Statistical variables: align thesaurus)
No edit summary
Line 1: Line 1:
 
{{StatsPsy}}
 
{{StatsPsy}}
  +
{{expert}}
In computer science and [[mathematics]], a '''variable''' is a symbol denoting a [[quantity]] or [[symbol|symbolic representation]]. In mathematics, a variable often represents an ''unknown'' quantity; in computer science, it represents a place where a quantity can be stored. Variables are often contrasted with [[constant]]s, which are known and unchanging.
+
In psychology a '''variable''' is a symbol denoting a [[quantity]] or [[symbol|symbolic representation]]. Variables are often contrasted with [[constant]]s, which are known and unchanging.
   
 
In other scientific fields such as biology, chemistry, and physics, the word '''variable''' is used to refer to a measurable factor, characteristic, or attribute of an individual or a system. In a scientific experiment, so called "[[independent variable]]s" are factors that can be altered or chosen by the scientist. For example, temperature is a common environmental factor that can be controlled in laboratory experiments. "[[Dependent variable]]s" or "response variables" are those that are measured and collected as [[data]]. An independent variable is presumed to affect a dependent one.
 
In other scientific fields such as biology, chemistry, and physics, the word '''variable''' is used to refer to a measurable factor, characteristic, or attribute of an individual or a system. In a scientific experiment, so called "[[independent variable]]s" are factors that can be altered or chosen by the scientist. For example, temperature is a common environmental factor that can be controlled in laboratory experiments. "[[Dependent variable]]s" or "response variables" are those that are measured and collected as [[data]]. An independent variable is presumed to affect a dependent one.
Line 24: Line 25:
 
In [[computer]] [[programming language]]s without [[referential transparency]], such changes can occur.
 
In [[computer]] [[programming language]]s without [[referential transparency]], such changes can occur.
   
==Computer programming==
 
In programming languages, a '''variable''' can be thought of as a place to store a ''[[value (computer science)|value]]'' in [[computer memory]].
 
 
More precisely, a variable binds (associates) a ''[[name (computer science)|name]]'' (sometimes called an ''identifier'') with the location; a value in turn is stored as a data ''[[object (computer science)|object]]'' in that location so that the object can be accessed later via the variable, much like referring to someone by name. Variables in [[computer]] programming are analogous to variables in mathematics. Put in another way, an object could exist without being bound to a variable, but without such a referent, it would be inaccessible from code.
 
 
===Variables names===
 
 
Variables are denoted by [[identifier]]s.
 
 
In some programming languages, specific characters are prepended or appended to variable identifiers to indicate the variable's type. For example:
 
* in [[BASIC programming language|BASIC]], the suffix <TT>$</TT> on a variable name indicates that its value is a [[String (computer science)|string]];
 
* in [[Perl]], the prefixes <TT>$</TT>, <TT>@</TT>, <TT>%</TT>, and <TT>&</TT> indicate scalar, array, hash, and subroutine variables, respectively.
 
 
''(See also [[name (computer science)]] and [[namespace (computer science)]].)''
 
 
===Scope and extent===
 
 
The ''[[scope (programming)|scope]]'' of a variable describes where in a program's text a variable may be used, while ''extent'' (or ''lifetime'') describes when in a program's execution a variable has a value. A variable's scope affects its extent.
 
 
''Scope'' is a [[lexical variable scoping|lexical]] aspect of a variable. Most languages define a specific ''scope'' for each variable, which may differ within a given program. The scope of a variable is the portion of the program code for which the variable's name has meaning and for which the variable is said to be ''visible''. Entrance into that scope typically begins a variable's life-time and exit from that scope typically ends its life-time. For instance, a variable with ''lexical scope'' is meaningful only within a certain block of statements or [[subroutine]]. A ''global variable'', or one with ''indefinite scope'', may be referred to anywhere in the program. It is erroneous to refer to a variable where it is out of scope. [[Lexical analysis]] of a program can determine whether variables are used out of scope. In compiled languages, such analysis can be performed statically, at compile-time.
 
 
''Extent'', on the other hand, is a runtime ([[dynamic variable scoping|dynamic]]) aspect of a variable. Each [[binding (computer science)|binding]] of a variable to a value can have its own ''extent'' at runtime. The extent of a binding is the portion of the program's execution time during which the variable continues to refer to the same value or memory location. A running program may enter and leave a given extent many times, as in the case of a [[closure (computer science)|closure]].
 
 
In portions of code, a variable in scope may never have been given a value, or its value may have been destroyed. Such variables are described as ''out of extent'' or ''unbound''. In many languages, it is an error to try to use the value of a variable when it is out of extent. In other languages, doing so may yield [[undefined behavior|unpredictable results]]. Such a variable may, however, be assigned a new value, which gives it a new extent. By contrast, it is permissible for a variable binding to extend beyond its scope, as occurs in Lisp closures and C [[static variable]]s. When execution passes back into the variable's scope, the variable may once again be used.
 
 
For space efficiency, a memory space needed for a variable may be allocated only when the variable is first used and freed when it is no longer needed. A variable is only needed when it is in scope, but beginning each variable's life-time when it enters scope may give space to unused variables. To avoid wasting such space, compilers often warn programmers if a variable is declared but not used.
 
 
It is considered good programming practice to make the scope of variables as narrow as feasible so that different parts of a program do not accidentally interact with each other by modifying each other's variables. Doing so also prevents [[action at distance (computer science)|action at a distance]]. Common techniques for doing so are to have different sections of a program use different [[Namespace_%28programming%29|namespace]]s, or to make individual variables ''private'' through either [[dynamic variable scoping]] or [[lexical variable scoping]].
 
 
Many programming languages employ a reserved value (often named ''[[null]]'' or ''[[nil]]'') to indicate an invalid or uninitialized variable.
 
 
===Typed and untyped variables===
 
 
In [[static typing|statically-typed]] languages such as [[Java programming language|Java]] or [[ML programming language|ML]], a variable also has ''type'', meaning that only values of a given class (or set of classes) can be stored in it. In [[dynamic typing|dynamically-typed]] languages such as [[Python programming language|Python]] or [[Lisp programming language|Lisp]], it is values and not variables which carry type. ''See [[type system]].''
 
 
Typing of variables also allows [[polymorphism (computer science)|polymorphisms]] to be resolved at compile time.
 
 
Variables often store simple data like integers and literal strings, but some programming languages allow a variable to store values of other [[datatype]]s as well. Such languages may also enable functions to be [[type polymorphism|parametric polymorphic]]. Such functions operate like variables to represent data of multiple types. For example, a function named "<code>length</code>" may determine the length of a list. Such a <code>length</code> function may be parametric polymorphic by including a type variable in its [[type signature]] since the amount of elements in the list is independent of the elements' types.
 
 
===Parameters===
 
 
The ''arguments'' or ''formal parameters'' of functions are also referred to as variables. For instance, in these equivalent functions in Python and Lisp
 
 
def addtwo(x):
 
return x + 2
 
 
(defun addtwo (x) (+ x 2))
 
 
the variable named <TT>x</TT> is an argument. It is given a value when the function is called. In most languages, function arguments have local scope; this specific variable named <TT>x</TT> can only be referred to within the <TT>addtwo</TT> function, though of course other functions can also have variables called <TT>x</TT>.
 
 
=== Memory allocation ===
 
The specifics of variable allocation and the representation of their values vary widely, both among programming languages and among implementations of any given language. Many language implementations allocate space for ''local variables'', whose extent lasts for a single function call with, on the ''execution stack'', whose memory is automatically reclaimed when the function returns. More generally, in ''[[name binding]]'', the name of a variable is bound to the address of some particular block (contiguous sequence) of bytes in memory, and operations on the variable manipulate that block. [[reference (computer science)|Referencing]] is more common for variables whose value have large or unknown sizes when the code is compiled. Such variables reference the location of (i.e. the ''pointer'' to) the value instead of the storing value itself, which is allocated from a pool of memory called the ''heap''.
 
 
Bound variables have values. A value, however, is an abstraction, an idea; in implementation, a value is represented by some ''data object'', which is stored somewhere in computer memory. The program, or the runtime environment, must set aside memory for each data object and, since memory is finite, ensure that this memory is yielded for re-use when the object is no longer needed to represent some variable's value.
 
 
Objects allocated from the ''heap'' must be reclaimed specially when the objects are no longer needed. In a ''[[garbage collection (computer science)|garbage-collected]]'' language, such as C#, Java, and Lisp, the runtime environment automatically "reaps" objects when extant variables can no longer refer to them. In a ''non-garbage-collected'' languages, such as C, the program (and thus the programmer) must explicitly ''[[malloc|allocate]]'' memory and later ''free'' it to reclaim its memory. Failure to do so leads to [[memory leak]]s, in which the heap is depleted as the program runs, risking of eventual failure from exhausting available memory.
 
 
When a variable refers to a [[data structure]] created dynamically, some of its components may be only indirectly accessed through the variable. In such circumstances, garbage collectors (or analogous program features in languages that lack garbage collectors) must deal with the case where only a portion of the memory reachable from a variable needs to be reclaimed.
 
 
===Mutable vs. immutable===
 
Variables can be either ''mutable'' or ''immutable''. Mutable variables are said to have both an ''l-value'' and an ''r-value'', but immutable have only an ''r-value''. In functional programming, all variables are immutable. Because immutable variables are semantically the same as named constants or constant functions, the term "variable" generally usually indicates a mutable variable.
 
 
In C++, but not in C, "<code>mutable</code>" is a keyword to allow a mutable member to be modified by a ''const'' member function.
 
 
===Constants===
 
A '''constant''' variable is similar to an immutable variable, but while the value referenced by an immutable variable cannot change during program execution, with a constant it is the location referenced by the constant that cannot change. Since constant variables are often bound to literal values, which are themselves immutable, constant variables are often themselves immutable (e.g. <code>const int HoursPerDay=24</code>). Although a constant value is specified only once, the constant variable can be referenced multiple times in a program. Using a constant instead of specifying a value multiple times in the program can simplify code maintenance, not only to simplify changing its value but also to supply a meaningful name for it and to consolidate such constant assignments to a standard code location, for example at the beginning.
 
 
Programming languages provide one of two kinds of constant variables:
 
;'''Static constant''' or '''Manifest constant''': Languages such as Visual Basic allow assigning to ''static constant'' a fixed value, which will be known before the program starts. Such a constant has the same value each time its program runs. Changing the value is accomplished by changing (and possibly recompiling) the code. E.g.: <code>CONST a = 60</code>
 
 
;'''Dynamic constant''': Languages such as Java allow assigning to a ''dynamic constant'' an expression, possibly involving non-constant operands. The value of such constants may rely on variables defined while a computer program is running. Thus, unlike static constants, the values of dynamic constants cannot be determined at compile time. E.g.: <code>final int a = b + 20;</code>
 
   
 
==See also==
 
==See also==
  +
*[[Experimental design]]
 
  +
*[[Experimentation]]
  +
*[[Population (statistics}]]
  +
*[[Prediction errors]]
  +
*[[Random variable]]
  +
*[[Sampling (experimentatal]]
  +
*[[Statistical analysis]]
  +
*[[Statistical corelation]]
  +
*[[Statistical data]]
  +
*[[Statistical tables]]
  +
*[[Statistical validity]]
 
*[[Undefined variable]]
 
*[[Undefined variable]]
   
 
==External link==
 
==External link==
   
*[http://www.legislation.hmso.gov.uk/acts/acts2003/30042--b.htm Example of the use of variables (persons A and B) in a law] ('''NB: this comes from the Sexual Offences Act.''')
 
   
[[Category:Algebra]]
+
[[Category:Statistical analysis]]
 
[[Category:Variables]]
 
[[Category:Variables]]
   

Revision as of 18:21, 11 December 2009

Assessment | Biopsychology | Comparative | Cognitive | Developmental | Language | Individual differences | Personality | Philosophy | Social |
Methods | Statistics | Clinical | Educational | Industrial | Professional items | World psychology |

Statistics: Scientific method · Research methods · Experimental design · Undergraduate statistics courses · Statistical tests · Game theory · Decision theory


This article is in need of attention from a psychologist/academic expert on the subject.
Please help recruit one, or improve this page yourself if you are qualified.
This banner appears on articles that are weak and whose contents should be approached with academic caution.

In psychology a variable is a symbol denoting a quantity or symbolic representation. Variables are often contrasted with constants, which are known and unchanging.

In other scientific fields such as biology, chemistry, and physics, the word variable is used to refer to a measurable factor, characteristic, or attribute of an individual or a system. In a scientific experiment, so called "independent variables" are factors that can be altered or chosen by the scientist. For example, temperature is a common environmental factor that can be controlled in laboratory experiments. "Dependent variables" or "response variables" are those that are measured and collected as data. An independent variable is presumed to affect a dependent one.

In social sciences, variable is a logical set of attributes. A variable such as "gender" would have two attributes: male and female.

General overview

Variables are used in open sentences. For instance, in the formula: x + 1 = 5, x is a variable which represents an "unknown" number. In mathematics, variables are usually represented by letters of the Roman alphabet, but are also represented by letters of other alphabets; as well as various other symbols. In computer programming, variables are usually represented by alphanumeric strings.

Why are variables useful?

Variables are useful in mathematics and computer programming because they allow instructions to be specified in a general way. If one were forced to use actual values, then the instructions would only apply in a more narrow, and specific set of situations. For example: specify a mathematical definition for finding the square of ANY number: square(x) = x · x.

Now, all we need to do to find the square of a number is replace x with any number we want.

  • square(x) = x · x = y
  • square(1) = 1 · 1 = 1
  • square(2) = 2 · 2 = 4
  • square(3) = 3 · 3 = 9

etc...

In the above example, the variable x is a "placeholder" for ANY number. One important thing we are assuming is that the value of each occurrence of x is the same -- that x does not get a new value between the first x and the second x. In computer programming languages without referential transparency, such changes can occur.


See also

External link

Psi This page uses content from the English-language version of The Psychology Wiki. The original article was at variable. The list of authors can be seen in the page history. The text of both The Psychology Wiki and Wikipedia is available under the GNU Free Documentation License.