Side Effect (computer Science)

Side Effect (computer Science)

In computer science, a function or expression is said to have a side effect if, in addition to returning a value, it also modifies some state or has an observable interaction with calling functions or the outside world. For example, a function might modify a global or static variable, modify one of its arguments, raise an exception, write data to a display or file, read data, or call other side-effecting functions. In the presence of side effects, a program's behavior depends on history; that is, the order of evaluation matters. Understanding a program with side effects requires knowledge about the context and its possible histories; and therefore can be hard to read, understand and debug.

Side effects are the most common way to enable a program to interact with the outside world (people, filesystems, other computers on networks). But the degree to which side effects are used depends on the programming paradigm. Imperative programming is known for its frequent utilization of side effects. In functional programming, side effects are rarely used. Functional languages such as Standard ML, Scheme and Scala do not restrict side effects, but it is customary for programmers to avoid them. The functional language Haskell restricts side effects with a static type system; it uses the concept of monads to do stateful and IO computations.

Assembly language programmers must be aware of hidden side effects — instructions that modify parts of the processor state which are not mentioned in the instruction's mnemonic. A classic example of a hidden side effect is an arithmetic instruction which explicitly modifies a register (an overt effect) and implicitly modifies condition codes (a hidden side effect). One defect of an instruction set with many hidden side effects is that, if many instructions have side effects on a single piece of state, like condition codes, then the logic required to update that state sequentially may become a performance bottleneck. The problem is particularly acute on processors designed with pipelining (since 1990) or with out-of-order execution. Such a processor may require additional control circuitry to detect hidden side effects and stall the pipeline if the next instruction depends on the results of those effects.

Read more about Side Effect (computer Science):  Referential Transparency, Temporal Side Effects, Idempotence, Example

Famous quotes containing the words side and/or effect:

    The attention of those who frequent the camp-meetings at Eastham is said to be divided between the preaching of the Methodists and the preaching of the billows on the back side of the Cape, for they all stream over here in the course of their stay. I trust that in this case the loudest voice carries it. With what effect may we suppose the ocean to say, “My hearers!” to the multitude on the bank. On that side some John N. Maffit; on this, the Reverend Poluphloisboios Thalassa.
    Henry David Thoreau (1817–1862)

    A readiness to believe ill of others, before we have duly examined it, is the effect of laziness and pride. We are eager to find a culprit, and loath to give ourselves the trouble of examining the crime.
    François, Duc De La Rochefoucauld (1613–1680)